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