SimpleMessageListenerContainer方法应在超时后停止处理

时间:2016-05-30 16:48:27

标签: java spring jms

我让JVM1通过MQ同步向JVM2发送请求。这是使用JmsInvokerServiceExporter,SimpleMessageListenerContainer和JmsInvokerProxyFactoryBean实现的。编写JVM2中的侦听器方法,以便在处理期间出现任何异常时,它将构造一个指示出错的默认响应。如果一切顺利,它将发送成功的响应。

现在我要找的是如果监听器方法花费的时间超过预定义的时间段,则会抛出异常,以便监听器可以停止进一步处理并将默认响应发送回JVM1。基本上JVM2侦听器不应该超过时间X秒处理,并且应该能够发回默认响应。

我可以在X秒后使JVM1超时,但后来我没有得到我期望从JVM2获得的默认响应。有人可以让我知道是否可以实现这样的事情?下面给出了用于设置jvm1和2之间的通信的代码片段。

使用JMSInvokerServiceExporter公开pojo Calculator.java服务以通过JMS进行远程处理

<bean id="calculatorService"    class="com.spring.remoting.service.impl.SalaryCalculator" />

<bean id="remoteCalculatorService" class="org.springframework.jms.remoting.JmsInvokerServiceExporter">
    <property name="service" ref="calculatorService">
    <property name="serviceInterface"   value="com.spring.remoting.service.Calculator" />
</bean>

听众和祈求者

<bean class="org.springframework.jms.listener.SimpleMessageListenerContainer">
   <property name="connectionFactory" ref="connectionFactory"/>
   <property name="destination" ref="myQueue"/>
   <property name="concurrentConsumers" value="3"/>
   <property name="messageListener" ref="remoteCalculatorService"/>
</bean>  

<bean id="remoteCalculatorService" class="org.springframework.jms.remoting.JmsInvokerProxyFactoryBean">
     <property name="serviceInterface" value="com.spring.remoting.service.Calculator" />
     <property name="connectionFactory" ref="connectionFactory"/>
     <property name="queue" ref="myQueue"/>
</bean>

0 个答案:

没有答案