【问题标题】:synchronous activemq webservice同步activemq webservice
【发布时间】:2015-09-21 12:37:39
【问题描述】:

我有一个通过 ActiveMQ 发送消息的 Web 服务(Restful),并通过在同一请求中创建一个临时侦听器来同步接收响应。

问题是,监听器等待同步进程的响应,但永远不会死。我需要那个监听器接收响应,并在响应 web 服务请求后立即停止监听器。

我有一个很大的问题,因为对于 Web 服务的每个请求,都会创建一个侦听器,并且该侦听器处于活动状态,从而产生开销。

【问题讨论】:

标签: web-services jakarta-ee activemq sync


【解决方案1】:

链接中的代码不是生产级代码 - 只是一个如何做出“hello world”请求回复的示例。

这里有一些伪代码来处理消费响应阻塞 - 并在之后关闭消费者。

MessageConsumer responseConsumer = session.createConsumer(tempDest);
Messages response = responseConsumer.receive(waitTimeout);
// TODO handle msg
responseConsumer.close();

无论如何,JMS 中的临时目标都非常慢。您可以改为使用 JMSCorrelationID 并将回复转到由单个消费者处理的所有回复的“常规队列”。这样,您需要一些线程处理代码来将消息传递给 Web 服务线程,但这将是非阻塞的并且非常快。

【讨论】:

  • 谢谢!我会试试这个解决方案。
猜你喜欢
  • 2014-03-30
  • 1970-01-01
  • 2021-01-08
  • 2015-01-22
  • 2014-12-29
  • 1970-01-01
  • 2015-03-01
  • 2017-04-01
  • 1970-01-01
相关资源
最近更新 更多