Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向具有bind=true的优先级队列发送消息_C#_Rabbitmq_Masstransit - Fatal编程技术网

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观点?