【问题标题】:Masstransit. Handler doesn't acknowledge messages轨道交通。处理程序不确认消息
【发布时间】:2017-12-10 07:21:22
【问题描述】:

我有发布者:

 static void Main()
    {
        var bus = ServiceBusFactory.New(sbc =>
        {
            sbc.UseRabbitMq(r => r.ConfigureHost(new MessageUrn("rabbitmq://localhost/test123"), c => { }));
            sbc.UseJsonSerializer();
            sbc.EnableMessageTracing();
            sbc.ReceiveFrom(new MessageUrn("rabbitmq://localhost/test345"));
        });

        bus.WriteIntrospectionToConsole();
        Console.WriteLine("bus endpoint {0}", bus.Endpoint.Address);
        while(true)
        {
            Thread.Sleep(1000);
            var msg = new TestMessage {Text = DateTime.Now.ToString()};
            Console.WriteLine("Publishing {0}", msg);
            bus.Publish(msg);
        }
    }

发布队列 test123,接收队列 test 345。

当我使用以下代码启动消费者时:

 static void Main()
    {
        var bus = ServiceBusFactory.New(sbc =>
        {
            sbc.UseRabbitMq();
            sbc.UseJsonSerializer();
            sbc.EnableMessageTracing();
            sbc.ReceiveFrom("rabbitmq://localhost/test345");
            sbc.Subscribe(subs => { subs.Handler<TestMessage>(msg => { Console.WriteLine(msg.Text); }); });
        });
        bus.WriteIntrospectionToConsole();
        Console.ReadLine();
    }

消费者(订阅者)处理消息并将它们写入控制台。这部分一切正常。但是test123中的消息没有被确认。它们的数量不断增加,它们处于就绪状态。它们有些被消耗但不会消失。

我做错了什么?

另一个我无法理解的问题是,当我删除所有队列,运行发布者时,它只创建 test345 和 test345_error 队列。没有 test123 队列。如果发布者工作了一段时间,test345_error 中的消息很少,而 test345 中没有消息。当我启动消费者(见上面的代码)时,它开始消费消息,看起来没问题。为什么 test345 队列中没有消息?但不知何故,它们被消耗(处理)了?

Masstransit v2.10.0.0,RabbitMQ.Client v3.4.3.0。

提前致谢。

【问题讨论】:

  • 你的两个程序应该有不同的 ReceveFrom() 地址。

标签: .net rabbitmq message-queue masstransit


【解决方案1】:

好的,似乎可以通过将发布者中的两个队列修复为 test123 来解决。没有错误,没有跳过。

【讨论】:

    猜你喜欢
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    相关资源
    最近更新 更多