首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Integration jms aysnchronous /reply

Spring Integration jms aysnchronous /reply
EN

Stack Overflow用户
提问于 2015-03-05 05:06:44
回答 1查看 574关注 0票数 1

我们需要使用SI服务为GUI提供服务。图形用户界面通过JMS队列与后端通信,并将在jms replyTo标头属性中指定的tmp队列上等待响应。

因此,可能有10个gui向后端发出查询,并在它们各自的tmp队列上接收消息。

因此,我使用入站网关编写了一个SI服务,如下所示

代码语言:javascript
复制
<int:channel id="inChannel" />  
<int:channel id="outChannel" />

<int-jms:inbound-gateway id="jmsSampleService" request-destination-name="TEST_QUEUE_2" request-channel="inChannel" 
connection-factory="qpidJmsConnectionFactory" extract-request-payload="true" error-channel="errorChannel" /> 
<int:service-activator input-channel="inChannel" ref="sampleService2" method="processMessage" />

public class SampleService2 {

public Response processMessage(Object obj) throws Exception {
    LOG.info("Message received on sample service. ");
    Thread.sleep(5000);     
    Response response = new ResponseImpl();
    response.setPayload("Test response");
    return response;
}

这工作得很好,我可以看到服务在jmsReplyTo队列上返回一条消息。然而,这是一个单线程的同步操作,这意味着除非GUI1被服务,否则GUI2的调用将被阻塞。我想异步地做这件事,因为这只是一个类上的方法调用。

我们在mule上做了类似的事情

代码语言:javascript
复制
<flow name="sampleServiceFlow">
  <jms:inbound-endpoint queue="TEST_QUEUE" connector-ref="queryQpidConnector" />                    
  <byte-array-to-object-transformer />
  <component>
      <spring-object bean="sampleService" />
  </component>
  <object-to-byte-array-transformer />
  <expression-filter evaluator="groovy"
        expression="message.getOutboundProperty('replyToQueueName') != null" />
  <jms:outbound-endpoint queue="#[header:OUTBOUND:replyToQueueName]" connector-ref="queryQpidConnector" />             
</flow>

由于mule服务没有任何txn,因此它能够简单地在auto-ack中使用一条消息,并让SampleService的方法调用服务于该调用。

有没有办法在SI中实现这样的东西?也许是通过使用消息驱动通道适配器?有没有一种方法可以在通道之间传播jms头属性?

EN

回答 1

Stack Overflow用户

发布于 2015-03-05 05:48:17

只需在入站网关上使用并发即可。concurrent-consumers是最小的max-concurrent-consumers (如果指定)是最大的;适配器的容器根据需要调整并发性。

我不知道你说的是什么意思

有没有办法在通道之间传播jms头属性?

jms头被映射到集成头,反之亦然。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28864941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档