【问题标题】:Handling consumer cancellation notifications in RabbitMQ在 RabbitMQ 中处理消费者取消通知
【发布时间】:2012-06-28 10:28:03
【问题描述】:

我们已按照http://www.rabbitmq.com/ha.html 中的说明设置了一个包含 3 个节点 rabbit1、rabbit2 和 rabbit3 的主动-主动集群。 为了创建镜像队列,我们​​使用 x-ha-policy 并获取消费者取消通知,我们在 clientProperties 中为 consumer_cancel_notify 设置了 true。 现在,我们以 rabbit2 为 master 将消息发布到队列,并让消费者从 rabbit3 消费。当 rabbit2 停止时,连接到 rabbit3 的消费者不会收到取消通知。

我们使用的是 rabbitmq 2.8.2-1,我们的 java 消费者 POC 代码在这里 - https://gist.github.com/2990146

不确定我们做错了什么。任何指针将不胜感激。

有没有人尝试使用 php-amqplib 处理取消通知?

【问题讨论】:

    标签: rabbitmq


    【解决方案1】:

    您的要点的第 22 行是一个问题。 consumer_cancel_notify 需要在 clientProperties 的功能表中,而不是顶级键。

    clientProperties.put("consumer_cancel_notify", Boolean.valueOf(true));
    

    AMQP 0-9-1 客户端默认不期望接收 basic.cancel 来自代理的异步方法,因此为了启用它 行为,客户端必须在其 client-properties,其中有一个键 consumer_cancel_notify 和一个 布尔值真。有关更多详细信息,请参阅功能部分 对此。 http://www.rabbitmq.com/extensions.html#consumer-cancel-notify

    Handwaving pseudo-java(请在测试后编辑此答案)

    Map<String, Object> clientProperties = new HashMap<String, Object>();
    Map<String, Object> clientCapabilities = new HashMap<String, Object>();
    clientCapabilities.put("consumer_cancel_notify", Boolean.valueOf(true));
    clientProperties.put("capabilities", clientCapabilities);
    

    至于您最初的问题,“有没有人尝试使用 php-amqplib 处理取消通知?”看起来答案是坚定的“也许”==> http://grokbase.com/t/rabbitmq/rabbitmq-discuss/11cynv8zkz/active-active-implementation-in-php

    【讨论】:

    • 您能告诉我在哪里为 .NET 客户端指定此选项吗?
    • @Pritam ,我没有使用过 .NET,但看起来您会将其设置为传递给 ConnectionStartOKIDictionary clientPropertiescapabilities 键上的子字典. rabbitmq.com/releases/rabbitmq-dotnet-client/v3.4.3/…
    猜你喜欢
    • 2013-06-09
    • 2016-05-04
    • 1970-01-01
    • 2015-10-03
    • 2017-07-31
    • 2014-07-23
    • 2017-03-13
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多