我让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>