gpt4 book ai didi

java - 能否用轮询 Web 服务调用代替 JMS 消息传递?

转载 作者:搜寻专家 更新时间:2023-11-01 01:45:54 24 4
gpt4 key购买 nike

现有场景:两个应用程序正在使用队列进行通信。其中之一始终是生产者,另一个始终是消费者。

“生产者”生成数据并将其保存在自己的存储中。然后它使用队列将其发送给消费者。

我对 JMS 消费者(和监听器)实现(使用 Spring)了解得越多,似乎我们可以轻松地将消息传递替换为轮询 Web 服务调用。

这是因为 JMS 监听器所做的就是保持线程打开,监听队列。因此,如果您的 JMS 监听器 ConnectionFactory 设置为有 10 个连接,您将有 10 个阻塞线程。

因此,与其保持 10 个线程处于打开状态,不如每隔 30 秒左右使用 1 个线程轮询一次。该轮询可以指示 WebService 在响应中向其发送 100 个(或更多)数据项。

最佳答案

这两者都只是抽象。如果您考虑它,它只是一个套接字,您正在推送数据。真正不同的是每个抽象所做的保证。太疯狂了,您实际上可以拥有通过 JMS 和使用 HTTP 作为传输的 JMS 提供服务的 SOAP Web 服务。

简而言之,JMS 指定了一组与消息传递相关的保证(确认、重新交付、故障转移等)。 Web 服务(大多数人对它们的看法)主要由一组薄薄的描述消息格式(SOAP、JSON)的规范组成,这些规范位于描述传输(HTTP)的规范之上。

关于投票。大多数 JMS 实现都是推送模型。订阅者向代理注册,当消息到达时,它们被推送给订阅者。推送模型比拉模型具有更高的吞吐量。

关于java - 能否用轮询 Web 服务调用代替 JMS 消息传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10728289/

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