它像发布/订阅一样工作。因此,可以将队列绑定或取消绑定到不同的事件,以便消费者/订阅者只接收他们感兴趣的消息。
当然,生产者/发布者现在使用绑定键(事件名)作为routing_key
将其传递给pika实现。但是,当它为不存在的绑定发布某些内容时,消息就会丢失,也就是说,当没有人为事件foo
绑定队列时,但是一些发布服务器调用pika.basic_publish(...,routing_key='foo')
。
所以我的问题是:
>
检查pika.basic_publish的返回值。它总是返回none
。
检查当我们试图发布一个不存在的绑定时是否有异常。一个都没有。
有一个额外的队列来进行频带控制(因为所有订阅服务器都由相同的进程运行)。这种方法在我看来并不理想。
rabbitmq版本为2.8
多谢
我相信您的问题的答案是RabbitMQ中的强制标志:
此标志告诉服务器,如果消息无法路由到队列,该如何响应。具体地说,如果设置了强制,并且在运行绑定之后,消息被放置在零队列中,那么消息将返回给发件人(带有一个basic.return)。如果在相同的情况下没有设置强制,服务器将静默地删除消息。
这基本上意味着,对一条消息进行排队,如果它不能被路由,那么将它返回给我。查看规范中的basic_publish以打开它。
我的发布服务器代码如下所示: 如有任何帮助或指导,不胜感激,谢谢。
在学习RabbitMq中,有几种情况我不太知道怎么回事: 情况一 假如我定义了一个队列test,他没有显示绑定交换机,那么会自动绑定到默认交换机,那么这个时候绑定键bindkey是不是队列名字test??现在生产者发了一个消息,假如这个消息没有定义路由键routingKey,那么这个时候消息会被路由到队列test吗? 情况二 假如我定义了一个队列test1和test2,他们也是没有显示绑定交换机,
本文向大家介绍Python如何将消息发布到RabbitMQ,包括了Python如何将消息发布到RabbitMQ的使用技巧和注意事项,需要的朋友参考一下 示例 从导入库开始。 接下来,我们需要打开与RabbitMQ服务器的连接。 之后,我们需要建立一个频道。每个连接可以有多个通道,通常在执行多线程任务时,建议(但不是必需)每个线程一个。 建立频道后,我们就可以开始准备信息了。 现在,我们可以通过简单
在队列选项卡的rabbitMQ web界面上,我看到了“概述”面板,我在其中找到了以下内容: 排队消息: 准备好了 未确认 总数 我猜“总数”是多少。但什么是“准备就绪”和“未确认”?“准备好了”——传递给消费者的信息?“未确认”-? 消息费率: 发表 交付 重新交付 承认 这些信息是什么?尤其是“重新交付”和“确认”?这是什么意思?
主要内容:一、前情回顾,二、业务场景介绍,三、初步落地一、前情回顾 之前给大家聊了一下,面试时如果遇到消息中间件这个话题,面试官上来可能问的两个问题: 你们的系统架构中为什么要引入消息中间件? 系统架构中引入消息中间件有什么缺点? 关于这两个问题的回答,可以参见之前的两篇文章: 《 为什么要使用MQ消息中间件?这几个问题必须拿下!》 《 用了MQ消息中间件后,我开始后悔了...》 在问完这两个问题之后,不同风格的面试官可能会展开不同的发问。 针对那种
一种方法是声明队列并将消息发布到该队列,并让所有使用者从该队列中消费。这将在不同的消费者之间分发消息。 我不清楚,如果上面的操作是正确的,或者最佳实践是将消息传递到Exchange而不是直接发布到队列。使用Exchange时,我必须确保在生产者创建Exchange之后声明队列,然后才开始发布消息。否则,没有队列接收到消息,并且消息将丢失。