没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
全文可编辑 word 文档 页眉与背景水印可删除
1
运用.NetCore 实例讲解 RabbitMQ 死信队列,
延时队列
目录
一、死信队列二、延时队列三、延时消息设置不同过期
时间四、延时消息用延时插件的方式实现
一、死信队列
二、延时队列
三、延时消息设置不同过期时间
四、延时消息用延时插件的方式实现
一、死信队列
描述:Q1 队列绑定了 x-dead-letter-exchange(死信交
换机)为 X2,x-dead-letter-routing-key(死信路由 key)
指向 Q2(队列 2)
P(生产者)发送消息经 X1(交换机 1)路
由到 Q1(队列 1),Q1 的消息触发特定情况,自动把消息经
X2(交换机 2)路由到 Q2(队列 2),C(消费者)直接消息 Q2 的
消息。
特定情况有哪些呢:
全文可编辑 word 文档 页眉与背景水印可删除
2
1.消息被拒(basic.reject or basic.nack)并且没有重
新入队(requeue=false);
2.当前队列中的消息数量已经超过最大长度(创建队列
时指定" x-max-length 参数设置队列最大消息数量)。
3.消息在队列中过期,即当前消息在队列中的存活时间
已经超过了预先设置的 TTL(Time To Live)时间;
这里演示情况 1:
假如场景:Q1 中队列数据不完整,就算从新处理也会报
错,那就可以不 ack,把这个消息转到死信队列另外处理。
生产者:
public static void SendMessage()
{
//死信交换机
string dlxexChange =
"dlx.exchange";
//死信队列
string dlxQueueName =
"dlx.queue";
//消息交换机
全文可编辑 word 文档 页眉与背景水印可删除
3
string exchange =
"direct-exchange";
//消息队列
string queueName =
"queue_a";
using (var connection =
RabbitMQHelper.GetConnection())
{
using (var
channel = connection.CreateModel())
{
// 创 建
死信交换机
channel.
ExchangeDeclare(dlxexChange, type:
ExchangeType.Direct, durable: true, autoDelete:
false);
// 创 建
死信队列
channel.
全文可编辑 word 文档 页眉与背景水印可删除
4
QueueDeclare(dlxQueueName, durable: true, exclusive:
false, autoDelete: false);
// 死 信
队列绑定死信交换机
channel.
QueueBind(dlxQueueName, dlxexChange, routingKey:
dlxQueueName);
// 创建
消息交换机
channel.
ExchangeDeclare(exchange, type: ExchangeType.Direct,
durable: true, autoDelete: false);
// 创 建
消息队列,并指定死信队列
channel.
QueueDeclare(queueName, durable: true, exclusive:
false, autoDelete: false, arguments:
new
Dictionary<string, object> {
全文可编辑 word 文档 页眉与背景水印可删除
5
{ "x-dea
d-letter-exchange",dlxexChange}, // 设 置 当 前 队 列 的
DLX(死信交换机)
{ "x-dea
d-letter-routing-key",dlxQueueName}, //设置 DLX 的路
由 key,DLX 会根据该值去找到死信消息存放的队列
});
// 消 息
队列绑定消息交换机
channel.
QueueBind(queueName, exchange, routingKey:
queueName);
string
message = "hello rabbitmq message";
var
properties = channel.CreateBasicProperties();
propert
ies.Persistent = true;
// 发 布
剩余43页未读,继续阅读
资源评论
mmoo_python
- 粉丝: 0
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功