公共交通中与RabbitMQ竞争的消费者

公共交通中与RabbitMQ竞争的消费者,rabbitmq,masstransit,Rabbitmq,Masstransit,我用MassTransit实现了一个简单的发布者/消费者集,我希望让消费者从同一队列读取消息。但是,当我运行它时,我看到大部分消息被发送到错误队列,而不是被消耗。从我所看到的讨论(,)来看,RabbitMQ应该非常简单(只指向同一个队列),但它不起作用。是否应设置其他配置 这是我的出版商 public class YourMessage { public string Text { get; set; } } public class Program { public static vo

我用MassTransit实现了一个简单的发布者/消费者集,我希望让消费者从同一队列读取消息。但是,当我运行它时,我看到大部分消息被发送到错误队列,而不是被消耗。从我所看到的讨论(,)来看,RabbitMQ应该非常简单(只指向同一个队列),但它不起作用。是否应设置其他配置

这是我的出版商

public class YourMessage { public string Text { get; set; } }
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Publisher");
        Bus.Initialize(sbc =>
        {
            sbc.UseRabbitMqRouting();
            sbc.ReceiveFrom("rabbitmq://localhost/test_queue");
        });
        var x = Console.Read();
        for (var i = 0; i <= 1000; i++)
        {
            Console.WriteLine("Message Number " + i);
            Bus.Instance.Publish(new YourMessage { "Message Number " + i });
        }
    }
}
public类YourMessage{public string Text{get;set;}
公共课程
{
公共静态void Main()
{
Console.WriteLine(“出版商”);
总线初始化(sbc=>
{
sbc.UseRabbitMqRouting();
sbc.从(”rabbitmq://localhost/test_queue");
});
var x=Console.Read();
对于(var i=0;i
{
sbc.UseRabbitMqRouting();
sbc.从(”rabbitmq://localhost/test_queue");
订阅(subs=>
{
var del=新操作((上下文,消息)=>
{
Console.WriteLine(msg.Text);
});
子处理器(del);
});
});
while(true){}
}
}

接收者/使用者和发布者不能在同一队列中。如果希望竞争的使用者具有多个针对同一队列运行的使用者实例


我们有文档,但这一部分目前还缺乏,所以我理解您的困惑:如果您成功了,文档方面的帮助将非常好

因此,解决方案似乎是更改发布服务器中的行:

 sbc.ReceiveFrom("rabbitmq://localhost/test_queue"); 
例如:

 sbc.ReceiveFrom("rabbitmq://localhost/test_queue_publisher"); 

这阻止了发布者竞争他们没有配置为使用的消息。

刚刚在GitHub上找到了一个例子

 sbc.ReceiveFrom("rabbitmq://localhost/test_queue_publisher");