C# 向具有bind=true的优先级队列发送消息
向C# 向具有bind=true的优先级队列发送消息,c#,rabbitmq,masstransit,C#,Rabbitmq,Masstransit,向优先级队列发送消息时出现问题。如果我将bind设置为true,那么我将得到一个predition\u FAILED错误,因为发送试图创建相同的队列,但没有参数x-max-priority 完全错误: 前置条件_失败-队列的参数“x-max-priority”不相等 vhost“/”中的“TestQueue”:未收到任何消息,但current是值“1” 类型为“signedint” 我是否可以调整发送端点Uri,使其将消息发送到优先级队列,而不是尝试创建另一个没有参数x-max-Priority
优先级队列
发送消息时出现问题。如果我将bind
设置为true,那么我将得到一个predition\u FAILED
错误,因为发送试图创建相同的队列,但没有参数x-max-priority
完全错误:
前置条件_失败-队列的参数“x-max-priority”不相等
vhost“/”中的“TestQueue”:未收到任何消息,但current是值“1”
类型为“signedint”
我是否可以调整发送端点Uri,使其将消息发送到优先级队列
,而不是尝试创建另一个没有参数x-max-Priority
的队列?也许有办法通过发送端点Uri传递此参数
- 此SendEndpoint有效:
rabbitmq://host:5672/TestQueue?queue=TestQueue
- 此SendEndpoint失败:
rabbitmq://host:5672/TestQueue?queue=TestQueue&bind=true
bind=true
参数,因为它为消息传递提供了保证
预期行为
预期的行为是Send
应该选择优先级队列,因为优先级是在SendContext
中设置的:
await sendEndpoint.Send(message, sendContext =>
{
context.SetPriority(1);
});
您是否尝试过在URI中为发送端点设置队列参数?例如:
GetSendEndpoint(新Uri(“queue:?x-max-priority=1”))
不起作用,也尝试了priority=1
我讨厌听起来像一个坏记录,但这就是为什么制作人不应该定义消费者的行为。以及为什么消费者定义代理拓扑而不是生产者很重要。没有办法从Send
@chrispatterns设置队列最大优先级感谢您的消息,是否有一种最佳做法,即只有消费者才能定义代理拓扑,或者这更像是一种Masstransit观点?