rabbitmq for C#的异步消息确认机制
2024-09-06 01:40:14
代码:
using (var conn = RabbitmqHelper.GetConnection())
{
using (var channel = conn.CreateModel())
{
//这两个事件如果是using写法要写到创建交换器和队列并且进行绑定之前,否则不会触发
channel.BasicNacks += (sender, e) =>
{
//生产者发送消息到broker(服务器)后失败被生产者的listener监听到,就走无应答方法
Console.WriteLine(" --no ack-- ");
}; channel.BasicAcks += (sender, e) =>
{
//有应答
Console.WriteLine(" --ack-- ");
}; channel.ExchangeDeclare("log_topic", ExchangeType.Topic);
var msg = $"send {(args.Length == 0 ? "default" : args[0] ?? "default")} topic message";
var body = Encoding.UTF8.GetBytes(msg);
channel.ConfirmSelect();//不管是串行还是并行,都要加入声明确认这句话
channel.BasicPublish("log_topic", (args.Length < ? "#" : args[] ?? "#"), null, body);
Console.WriteLine(" [x] Sent {0}", msg);
//串行的写法
//if (channel.WaitForConfirms())
//{
// Console.WriteLine("[x] Sent success");
//}
//else
//{
// Console.WriteLine("[x] Sent faild");
//}
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
}
}
更多应答出现的问题:
https://blog.csdn.net/youbl/article/details/80425959
最新文章
- UVa11549计算器谜题[floyd判圈]
- 【转】Android 当打开“开发者模式”中的“不保留活动”后,程序应当怎么保持正常运行
- Apache+PHP+Mysql 集成环境 几个软件pk
- 配置DruidDataSource参考(com.alibaba.druid.pool.DruidDataSource)
- python auto send email
- linux之SQL语句简明教程---AND OR
- POJ 2305 Basic remains(进制转换)
- delphi 字符串查找替换函数 转
- Android界面(1) 使用TextView实现跑马灯效果
- 使用镜像仓库托管自己构建的Docker镜像
- Loadrunner11不能调用IE8解决方法大全
- 数据结构与算法 —— 链表linked list(04)
- python之pickle模块
- 一个 Vue &; Node 的全栈小项目
- tensorflow (七) k-means
- python-day79--知识回顾
- 2.初步认识Angular2
- 2017-2018 Exp5 MSF基础应用 20155214
- 最近玩Bootstrap , 一些小工具 记录在案。
- mysql 允许远程登录