gpt4 book ai didi

java - 使用 JMS/ActiveMQ 并发同步请求-回复 - 模式/库?

转载 作者:IT老高 更新时间:2023-10-28 20:35:47 24 4
gpt4 key购买 nike

我有一个网络应用程序,当用户提交请求时,我们将 JMS 消息发送到远程服务,然后等待回复。 (还有异步请求,我们为消息重放等设置了各种细节,所以我们更愿意坚持使用 JMS 而不是 HTTP)

How should I implement request response with JMS? ,ActiveMQ 似乎不鼓励每个请求使用临时队列或在 JMSCorrelationID 上使用选择器的临时消费者的想法,因为启动它们会产生开销。

但是,如果我使用池消费者进行回复,我如何从回复消费者分派(dispatch)回原始请求线程?

我当然可以编写自己的线程安全回调注册/调度,但我讨厌编写我怀疑已经由比我更了解的人编写的代码。

那个ActiveMQ页面推荐Lingo ,自 2006 年以来未更新,以及 Camel Spring Remoting ,我的团队因为它的许多陷阱错误而被 hell 禁止。

是否有更好的解决方案,以库的形式实现此模式,或者以不同的模式来模拟 JMS 上的同步请求-回复?


相关的 SO 问题:

最佳答案

在过去的项目中,我们遇到过类似的情况,同步 WS 请求是使用一对 Async req/res JMS 消息处理的。我们当时使用的是 Jboss JMS impl 和临时的 destinations 开销很大。

我们最终编写了一个线程安全的调度程序,让 WS 等待 JMS 响应到来。我们使用 CorrelationID 将响应映射回请求。

该解决方案都是自产的,但我遇到了一个很好的阻塞映射实现,它解决了将响应与请求匹配的问题。

BlockingMap

如果您的解决方案是集群的,您需要注意将响应消息分派(dispatch)到集群中的正确节点。我不知道 ActiveMQ,但我记得 JBoss 消息传递在其可集群目标的引擎盖下存在一些故障。

关于java - 使用 JMS/ActiveMQ 并发同步请求-回复 - 模式/库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11755146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com