[英]Multiple RabbitMQ Consumers DotNet Core
我們有一個應用程序需要為同一個查詢提供多個消費者。 數據具有這樣的性質,“競爭消費者”不是問題,因為消息可以按任何順序獨立處理。 我的問題是,由於 RabbitMQ 有自己的線程管理等,創建多個消費者選擇同一隊列的消息的最佳方法是什么? 查看這個簡單消費者的基本示例:
var factory = new ConnectionFactory() { HostName = "localhost" };
using(var connection = factory.CreateConnection())
using(var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "hello",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null);
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body.ToArray();
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
};
channel.BasicConsume(queue: "hello",
autoAck: true,
consumer: consumer);
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
}
我相信需要創建channel.BasicConsume(...)
多個實例,但最好的方法是什么? 使用TaskScheduler或多線程還是什么?
我可以介紹服務層並整理所有內容,但只需要知道最安全的方法是什么。
到目前為止,我發現的所有研究點都不是創建多個消費者,而是在我們的案例中這是一個要求。
一種簡單的方法是,你可以有兩個這樣的控制台應用程序,然后一起運行它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.