如何在使用带有C#的RawRabbit时指定队列名称?我找不到任何关于如何做的例子。如果实现INamingConvention是唯一的方法,那么如何使用INamingConvention?
我尝试过以下方式指定队列名称,但它仍然使用_appname作为后缀。
client.SubscribeAsync<string>(async (msg, context) =>
{
Console.WriteLine("Recieved: {0}", msg);
}, cfg=>cfg.WithQueue(q=>q.WithName("ha.test")));
答案 0 :(得分:1)
只需在GitHub中阅读RawRabbit的源代码即可。看起来有一个WithSubscriberId(string subscriberId)可供您使用。 subscriberId设置名称后缀,该后缀附加到您设置的队列名称的末尾。
使用QueueConfiguration类中的FullQueueName属性
创建队列public string FullQueueName
{
get
{
var fullQueueName = string.IsNullOrEmpty(NameSuffix)
? QueueName
: $"{QueueName}_{NameSuffix}";
return fullQueueName.Length > 254
? string.Concat("...", fullQueueName.Substring(fullQueueName.Length - 250))
: fullQueueName;
}
}
所以只需将subscriberId设置为空字符串。
client.SubscribeAsync<string>(async (msg, context) =>
{
Console.WriteLine("Recieved: {0}", msg);
}, cfg=>cfg.WithQueue(q=>q.WithName("ha.test")).WithSubscriberId(""));
这样的事情。我的PC上没有.NET Core,所以我无法验证它,所以请随时告诉我它不起作用。
已更新 修复了NewToSO评论
建议的代码