为什么在rabbitmq中只发送两条消息中的一条?

a2mppw5e  于 12个月前  发布在  RabbitMQ
关注(0)|答案(1)|浏览(138)

我正在尝试使用RabbitMQ(EasyNetQ)连接两个应用程序。我正在使用发送/接收模式。因此,应用程序(A)将向应用程序(B)发送命令,应用程序(B)将在处理后发送结果。
但是只有50%的消息总是传递到应用程序(B)。这是我的RabbitMQ Panel图表。正如您所看到的,只有带有交付图(浅蓝色)的消息可以在应用程序(B)中处理,而另一个消息只是被消费。

我是否应该更改消息或应用程序连接上的任何配置以确保所有消息都能传递?
我在没有任何消费者的情况下测试我的发送者可能很有用,所有的消息都在我的RabbitMQ中接收,但是当我运行我的消费者时,我的所有消息都从队列中删除了,而我的消费者服务中没有任何进程。

更新:

我又找到了一条线索。在EasyNetQ_Default_Error_Queue中,每个失败的消息都有一个错误:
在EasyNetQ.Consumer.HandlerCollection. GetData中找不到消息类型TestCommand的处理程序\n
看来我的联络人要被撤职了

hwamh0ep

hwamh0ep1#

最后我发现了问题。因此,它同时在一个类型上注册请求处理程序和Receiver函数。比如:

bus.RPC.ResponseAsync<TCommand, TResult>(someHandler);
bus.SendReceive.ReceiveAsync(queueName, registration =>
        {
            registration.Add<TCommand>(async (message, token) =>
            {
                await handler(message, token);
            }); 
        });

相关问题