我有一个网络应用程序,当用户提交请求时,我们将 JMS 消息发送到远程服务,然后等待回复。(还有异步请求,我们为消息重放等设置了各种细节,所以我们更愿意坚持使用 JMS 而不是 HTTP)
在我应该如何使用 JMS 实现请求响应?, ActiveMQ 似乎不鼓励每个请求使用临时队列或在 JMSCorrelationID 上使用选择器的临时消费者的想法,因为启动它们会产生开销。
但是,如果我使用池消费者进行回复,我如何从回复消费者分派回原始请求线程?
我当然可以编写自己的线程安全回调注册/调度,但我讨厌编写我怀疑已经由比我更了解的人编写的代码。
该 ActiveMQ 页面推荐Lingo,它自 2006 年以来就没有更新过,还有Camel Spring Remoting,我的团队因为它的许多陷阱错误而被地狱禁止。
是否有更好的解决方案,以实现此模式的库的形式,或以不同模式的形式来模拟 JMS 上的同步请求-回复?
相关的SO问题:
- 使用 JMS 临时队列进行同步使用是一种好习惯吗?,这表明使用 JMSCorrelationID 上的选择器启动消费者实际上是低开销的,这与 ActiveMQ 文档所说的相矛盾。谁是对的?