-2

我是 ActiveMQ 的初学者,所以我有一些问题......我将制作客户端-服务器应用程序,在服务器端使用 activemq。所有客户端都发送消息,因此服务器上有一个队列从所有客户端接收消息。据我了解,这不是问题。

但是还有一件事......在收到消息后,服务器使用它并为每个传入消息形成应答消息,并且该消息必须传递给所有客户端,而不仅仅是发送者。如果此时某个客户端没有连接,当连接恢复时,客户端必须接收该客户端离线期间服务器发送的所有消息(没有丢失)。

开始学习ActiveMQ,我找到了解决方案:服务器上有一定数量的“输出队列”,这个数量等于客户端的数量。因此,在形成答案后,服务器应用程序会遍历所有“输出队列”,并将消息放入每个队列中。在这个变体中,每个客户端都有唯一的 ID 并监听其 OWN 队列(包含所有应答消息),因此我们可以在服务器上监控每个客户端收到的消息数量(这是优势)。而且,我认为这不是最好的解决方案(队列中有很多相同的对象+在服务器端手动添加每个客户端都是缺点)。

了解更多关于 activemq 的信息,我发现了主题和持久订阅者。看起来像我需要描述的问题。但现在我的问题是 - 我如何监控主题消息?我尝试在浏览器管理员工具中观看它,也在 jconsole 中,但我还看不到这条消息。是否可以?以及未来的任何问题 - 使用主题是解决这个问题的好主意吗?或者,正如我所描述的,使用一定数量的输出队列可能会更好?

4

1 回答 1

1

持久订阅可能是要走的路。但是,正如您所经历的那样,您需要牺牲一点运营透明度。

您可能还想看看虚拟目的地,这可能会解决您的问题。

http://activemq.apache.org/virtual-destinations

于 2013-04-09T05:58:46.467 回答