2011-10-06 75 views
2

我想从客户端计算机通过连接不可靠消息发送到消费者的服务器计算机上。在我的程序中,我不想担心连接,只需说出“发送消息”并忘记它,知道它将在连接可用时发送。我可以在RabbitMQ上做可靠的发送和忘记吗?

在ActiveMQ的我可以通过安装在客户端和服务器的ActiveMQ代理并将其连接在一起达致这。从我的程序中,我将消息发送到客户端计算机上ActiveMQ代理上的队列。客户程序连接到服务器计算机上的ActiveMQ代理,其余部分由ActiveMQ完成。

我评估的RabbitMQ和想知道的RabbitMQ是否能够做同样的事情?我不希望在发送失败等情况下管理对返回消息的检查。我只是希望它能够接收消息并在任何可能的情况下转发/发送消息。

回答

1

您一定能RabbitMQ的做到这一点。如果您想使用相同的模型,你和ActiveMQ描述了(安装两个客户机和服务器经纪人)然后安装两个经纪人和使用RabbitMQ的shovel plugin连接它们。该插件将流量从经纪人分流到经纪人,并会给你你正在寻找的行为。

+0

谢谢,很好地回答了我的问题,实际的,但有一点已经竖起了我的兴趣。你说过“如果你想使用与你在ActiveMQ中描述的相同的模型......” - 实际上没有。理想情况下,我宁愿不必在客户端上安装代理,只需使用客户端连接库(顺便说一下,来自Java)。如果有办法做到这一点,并且仍然有我描述的良好体验(不必检测失败的发送并手动管理我的程序中的本地队列中的数据),那太棒了!有任何想法吗? – Fletch

+1

不幸的是,RabbitMQ客户端库没有(AFAIK)包含本地排队,以便在事件生成时远程代理不可用。然而,RabbitMQ包含了代理群集和队列复制等功能,可以让您的系统高度可用并且容忍单个代理的故障。您始终可以自行实施本地排队,但是您必须严格地将客户的逻辑复杂化以应对经纪人停机时间。这都是可能的,但让一个总是在运行的经纪人为你工作会更容易。 –

相关问题