RabbitMQ备份交换器
备份交换器,AlternateExchange(AE);
备份交换器是为了实现没有路由到队列的消息,与上篇介绍到的mandatory都是为了处理没有路由到的消息。
AE相对于mandatory逻辑更简单,不需要另外实现basic.Return,但是要另外设置一个Exchange,指向默认队列,消费该默认队列的消费者,处理接收到的消息。
ConnectionFactory factory = new ConnectionFactory();
factory.HostName = IP_ADDRESS;
factory.Port = PORT;
factory.UserName = USER_NAME;
factory.Password = PASSWORD;
con = factory.CreateConnection();
channel = con.CreateModel();
//备份交换器
Dictionary<string, object> args = new Dictionary<string, object>();
args.Add("alternate-exchage", "myAe");
channel.ExchangeDeclare(EXCHANGE_NAME, "topic", true, false, args);
channel.ExchangeDeclare("myAe", "fanout", true, false, null);//myAe的类型是fanout,没有路由的
//主队列
channel.QueueDeclare(QUEUE_NAME, true, false, false, null);
channel.QueueBind(QUEUE_NAME, EXCHANGE_NAME, BINDING_KEY, null);
//备份队列
channel.QueueDeclare("unroutedQueue", true, false, false, null);
channel.QueueBind("unroutedQueue", "myAe", null);//myAe的类型是fanout,没有路由的
string message = "Hello Word!";
var body = Encoding.UTF8.GetBytes(message);
var properties = channel.CreateBasicProperties();
properties.Persistent = true;
//如果交换器EXCHANGE_NAME根据ROUTING_KEY找到对应的队列,则发送给对应的队列
//如果交换器EXCHANGE_NAME根据ROUTING_KEY没有找到对应的队列,则发送给交换器myAe
channel.BasicPublish(EXCHANGE_NAME, ROUTING_KEY, properties, body);
---------------------
作者:wby90
来源:CSDN
原文:https://blog.csdn.net/wby90/article/details/79590136
版权声明:本文为博主原创文章,转载请附上博文链接!
RabbitMQ备份交换器的更多相关文章
- springboot整合rabbirmq(3.7.9)中使用mandatory参数获取匹配失败的消息以及存入rabbitmq备份交换器中!
先说下这个参数的作用: /** * Mandatory为true时,消息通过交换器无法匹配到队列会返回给生产者 * 为false时,匹配不到会直接被丢弃 */在一些特定场景下还是有用处的!接下来说一下 ...
- rabbitMq 学习笔记(二) 备份交换器,过期时间,死信队列,死信队列
备份交换器 备份交换器,英文名称为 Altemate Exchange,简称庙,或者更直白地称之为"备胎交换器". 生产者在发送消息的时候如果不设置 mandatory 参数, 那 ...
- RabbitMQ 备份交换机(alternate-exchange)介绍
RabbitMQ之备份交换机(alternate-exchange) 1.备份交换器,AlternateExchange(AE) 备份交换器是为了实现没有路由到队列的消息,声明交换机的时候添加属性al ...
- RabbitMQ的交换器Exchange之direct(发布与订阅 完全匹配)
1.交换器.用来接收生产者发送的消息并将这些消息路由给服务器中的队列.三种常用的交换器类型,a.direct(发布与订阅 完全匹配).b.fanout(广播).c.topic(主题,规则匹配). 2. ...
- 再看rabbitmq的交换器和队列的关系
最近又要用到rabbitmq,业务上要求服务器只发一次消息,需要多个客户端都去单独消费.但我们知道rabbitmq的机制里,每个队列里的消息只能消费一次,所以客户端要单独消费信息,就必须得每个客户端单 ...
- RabbitMQ topic 交换器
topic交换器:"."将路由键分为几个标识符,"*"匹配一个, "#"可以匹配多个 1:路由键为*或者#的时候 *:只能匹配单个的字符串 ...
- RabbitMQ direct交换器
1:队列和交换器多次绑定 String[] routekeys={"routekey1","routekey2","routekey3"}; ...
- springboot整合rabbitmq实现生产者消息确认、死信交换器、未路由到队列的消息
在上篇文章 springboot 整合 rabbitmq 中,我们实现了springboot 和rabbitmq的简单整合,这篇文章主要是对上篇文章功能的增强,主要完成如下功能. 需求: 生产者在启 ...
- RabbitMQ的三大交换器
pom文件都是相同的 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...
随机推荐
- 【WPF】创建文本字符串的路径PathGeometry
/// <summary> /// 创建文本路径 /// </summary> /// <param name="word">文本字符串< ...
- 将项目安装到Maven本地资源库
在Maven中,可以使用“mvn install”打包项目,并自动部署到本地资源库,让其他开发人员使用它. mvn install 注意,当“install”在执行阶段,上述所有阶段 “validat ...
- e785. 监听JList中项的变动
When the set of items in a list component is changed, a list data event is fired. // Create a list t ...
- (资源)Git优秀学习资源
在线教程 Try Git: Git初学者绝不能错过的Git上手资源. 廖雪峰Git教程: 比较系统的中文在线教程 易百Git教程 : 另一个比较全的中文在线教程 Git Immersion : A V ...
- Nginx访问日志 Nginx日志切割 静态文件不记录日志和过期时间
- 10.6 监控io性能 10.7 free命令 10.8 ps命令 10.9 查看网络状态 10.10 linux下抓包
iostat sysstat 包里面包括 sar 和 iostat [root@centos7 ~]# iostat Linux 3.10.0-693.2.2.el7.x86_64 (centos7. ...
- MongoDB数据直接转移
本方法较为暴力,有待验证,重要资料切勿使用.... 1.把一台电脑上MongoDB的--dbpath 下的文件夹 直接复制过来,放在新设备上 2.写个可爱的批处理文件 其实,就是改了个--dbpat ...
- jQuery form的load函数与el表达式赋值的冲突问题
问题: 在使用el表达式给表单中的项赋初始值的时候,总是失败,物流公司没有自动选中,物流单号也没有显示值. <form id="form" method="post ...
- 安装 运行yum报错:No module named yum
报错情况: There was a problem importing one of the Python modulesrequired to run yum. The error leading ...
- c++静态全局,局部变量---18
原创博文,转载请标明出处--周学伟 http://www.cnblogs.com/zxouxuewei/ static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static. ...