【发布时间】:2012-07-30 02:34:12
【问题描述】:
我有一个网络应用程序,当用户提交请求时,我们将 JMS 消息发送到远程服务,然后等待回复。 (还有异步请求,我们为消息重放等设置了各种细节,所以我们更愿意坚持使用 JMS 而不是 HTTP)
在How should I implement request response with JMS? 中,ActiveMQ 似乎不鼓励每个请求使用临时队列或在 JMSCorrelationID 上使用选择器的临时消费者的想法,因为启动它们会产生开销。
但是,如果我对回复使用池消费者,我如何从回复消费者分派回原始请求线程?
我当然可以编写自己的线程安全回调注册/调度,但我讨厌编写我怀疑已经由比我更了解的人编写的代码。
那个 ActiveMQ 页面推荐 Lingo,它自 2006 年以来就没有更新过,还有 Camel Spring Remoting,我的团队因为它的许多陷阱错误而被地狱禁止。
是否有更好的解决方案,以库的形式实现此模式,或者以不同的模式来模拟 JMS 上的同步请求-回复?
相关的 SO 问题:
- Is it a good practice to use JMS Temporary Queue for synchronous use?,这表明使用 JMSCorrelationID 上的选择器启动消费者实际上是低开销的,这与 ActiveMQ 文档所说的相矛盾。谁是对的?
【问题讨论】:
-
+1 表示研究得很好的问题。
标签: java multithreading jms activemq