【问题标题】:Can I do reliable send and forget on RabbitMQ?我可以在 RabbitMQ 上进行可靠的发送和忘记吗?
【发布时间】:2011-10-07 09:33:18
【问题描述】:

我想通过不可靠的连接从客户端计算机向服务器计算机上的消费者发送消息。在我的程序中,我不想担心连接,只需说“发送消息”并忘记它,知道只要连接可用,它就会发送。

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

我正在评估 RabbitMQ,想知道 RabbitMQ 是否可以做类似的事情?我不想在传递失败等情况下检查返回消息。我只希望它接收消息并尽可能转发/传递东西。

【问题讨论】:

    标签: rabbitmq amqp


    【解决方案1】:

    您当然可以使用 RabbitMQ 做到这一点。如果您想使用与 ActiveMQ 描述的相同的模型(在客户端和服务器机器上安装代理),则安装两个代理并使用 RabbitMQ shovel plugin 连接它们。该插件将流量从代理分流到代理,并为您提供所需的行为。

    【讨论】:

    • 谢谢,很好地回答了我的实际问题,但有一件事激起了我的兴趣。你说“如果你想使用与 ActiveMQ 描述的相同的模型......” - 实际上不是。理想情况下,我宁愿不必在客户端上安装代理,只需使用客户端连接库(顺便说一下,来自 Java)。如果有办法做到这一点并且仍然像我描述的那样拥有良好的体验(不必检测失败的发送并在我的程序中手动管理本地队列上的数据),那就太棒了!有什么想法吗?
    • 不幸的是,RabbitMQ 客户端库 (AFAIK) 不包括本地队列,以适应在事件生产时远程代理不可用的情况。然而,RabbitMQ 确实包含代理集群和队列复制等功能,这将使您的系统具有高可用性并能够容忍单个代理的故障。您始终可以自己实现本地排队,但是您必须使客户的逻辑严重复杂化以适应代理停机时间。这一切皆有可能,但让始终运行的经纪人为您完成这项工作会更容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 2021-01-04
    • 2014-11-27
    相关资源
    最近更新 更多