EasyNetQ在为队列生成名称时的默认行为是使用 消息类型名称+subscription Id
例如,名称空间EasyNetQ.Tests.Integration中的PartyInvitation消息类型将使用队列名称EasyNetQ.Tests.Integration.PartyInvitation:EasyNetQ.Tests_schedulingTest1,假定订阅ID为schedulingTest1。
1,控制队列名称
要控制队列的名称,请使用Queue属性注释消息类:
[Queue("TestMessagesQueue", ExchangeName = "MyTestExchange")] public class TestMessage { public string Text { get; set; } } // ... bus.Subscribe<TestMessage>(string.Empty, msg => Console.WriteLine(msg.Text));
在这里,我们告诉EasyNetQ将TestMessagesQueue用作队列名称,将MyTestExchange用作交换名称。 注意传递给Subscribe方法的subscriptionId是空的。 如果指定subscriptionId,则它将被追加到末尾并用作队列名称。
2,有关命名队列的注意事项
将队列名称设置为空字符串将使用默认的命名行为。队列名称的最大长度为255个字符(这由RabbitMQ客户端库执行)。名称可以是字母,数字,连字符,下划线,句号或冒号的序列。队列名称以“amq”开头。保留给预先声明和标准化的队列。