1、备份交换器,AlternateExchange(AE) 备份交换器是为了实现没有路由到队列的消息,声明交换机的时候添加属性alternate-exchange,声明一个备用交换机,一般声明为fanout类型,这样交换机收到路由不到队列的消息就会发送到备用交换机绑定的队列中。 使用Python的pika包,设置方式是在声明exchange时,argument的参数中设置alternate...
1、备份交换器,AlternateExchange(AE) 备份交换器是为了实现没有路由到队列的消息,声明交换机的时候添加属性alternate-exchange,声明一个备用交换机,一般声明为fanout类型,这样交换机收到路由不到队列的消息就会发送到备用交换机绑定的队列中。 使用Python的pika包,设置方式是在声明exchange时,argument的参数中设置alternate...
可以通过在声明交换器的时候添加alternate-exchange参数来实现,也可以通过策略的方式实现。如果两者同时使用的话,前者的优先级更高,会覆盖掉Policy的设置。参考下图,如果此时我们发送一条消息到normalExchange上,当路由键等于“normalKey”的时候,消息能正确路由到normalQueue这个队列中。如果路由键设为其他值,比如“e...
备份交换器(alternate-exchange):未被正确路由的消息将会经过此交换器 使用方法:申明交换器的时候设置alternate-exchange参数 1. 2.案例模拟 下面通过一个简单的示例说明在RabbitMQ中死信队列和备份交换机的使用方法。 2.1.示意图 2.2.配置文件 RabbitMQ配置信息,绑定交换器、队列、路由键设置 packagecom.bruceliu.confi...
备份交换器,英文名称为Alternate Exchange,简称AE,或者更直白地称之为“备胎交换器”。生产者在发送消息的时候如果不设置mandatory参数,那么消息在未被路由的情况下将会丢失;如果设置了mandatory参数,那么需要添加ReturnListener的编程逻辑,生产者的代码将变得复杂。
Arguments:只有一个取值alternate-exchange,表示备用交换机; 主要结论 结论1:没发消息之前不会创建交换机和对列 结论2:发消息后,如果交换机不存在,才开始创建交换机,如果队列不存在,则创建新的对列 结论3:创建交换机或者队列完成后再重新创建,如果修改交换机或队列参数则会报错 406错误(inequivalent arg 'durable' ...
alternate-exchange alternate有“备胎”的意思,从字面上理解就是备份交换器,它用于在声明交换器时给交换器指定一个备份交换器。当交换器根据自身类型和路由key找不到一个合适的队列时,交换器就会把消息转交给备份交换器(备份交换器和普通交换器没有特殊之处,它也需要绑定队列)。如果备份交换器根据自身类型和路由key...
Internal: 是否是内部专用exchange,是的话,就意味着我们不能往该exchange里面发消息。 Arguments: 参数,是AMQP协议留给AMQP实现做扩展使用的。 alternate_exchange配置的时候,exchange根据路由路由不到对应的队列的时候,这时候消息被路由到指定的alternate_exchange的value值配置的exchange上。(下面的博客会有说明这参数的具...
RabbitMQ提供的备份交换器(Alternate Exchange)可以将未能被交换器路由的消息(没有绑定队列或者没有匹配的绑定)存储起来,而不用返回给客户端。 对于初学者来说,特别容易将mandatory和immediate这两个参数混淆,而对于备份交换器更是一筹莫展,本文对此一一展开探讨。 本文选自《RabbitMQ实战指南》...
direct、fanout、topic、headers,x-consistent-hash和x-modulus-hash,一个参数Alternate exchange来实现备份交换器。 通过插件扩展,还可以声明如下交换器: rabbitmq_event_exchangerabbitmq_jms_topic_exchangerabbitmq_random_exchangerabbitmq_recent_history_exchangerabbitmq_lvc_exchangerabbitmq_rtopic_exchangerabbitmq_de...