2017-04-20 18 views
0

如何在使用RawRabbit與C#時指定隊列名稱?我無法在任何地方找到關於如何去做的例子。如果實施INamingConvention是唯一的方法,那麼如何與INamingConvention合作?RawRabbit使用或不使用INamingConvention設置隊列名稱

我已經嘗試指定隊列名稱的方式,但它仍然使用_appname作爲後綴。

client.SubscribeAsync<string>(async (msg, context) => 
     { 
      Console.WriteLine("Recieved: {0}", msg); 
     }, cfg=>cfg.WithQueue(q=>q.WithName("ha.test"))); 

回答

1

只讀了GitHub中RawRabbit的源代碼。看起來有一個WithSubscriberId(string subscriberId)可供您使用。該subscriberId設置名稱後綴,該名稱後綴追加到您設置的隊列名稱末尾。

隊列是使用在QueueConfiguration類

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爲空字符串的FullQueueName屬性創建。

client.SubscribeAsync<string>(async (msg, context) => 
{ 
    Console.WriteLine("Recieved: {0}", msg); 
}, cfg=>cfg.WithQueue(q=>q.WithName("ha.test")).WithSubscriberId("")); 

就是這樣的。我的電腦上沒有.NET Core,因此我無法驗證它,所以請隨時告訴我它不起作用。

修訂 固定的代碼通過NewToSO的評論

+0

它與一個修正的建議。 .WithSubscriberId(「」)需要附加到cfg.WithQueue而不是q.WithName。謝謝。 – Alpesh

相關問題