簡體   English   中英

多個 RabbitMQ 消費者 DotNet Core

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM