首页 > 解决方案 > 当侦听器连接到队列时,发布者无法在 RabbitMq 代理中发布消息

问题描述

我有两个 .net 应用程序通过两个 RabbitMq 队列相互通信。它是这样工作的:

Application1 在我将其命名为“QueueHot”的队列中发布消息,并确定他刚刚发布消息的这个队列没有侦听器,然后它初始化另一个 .net 应用程序(Application2),传递“QueueHot”作为参数。然后 Application2 启动,它开始监听 QueueHot,然后它设法从该 Queue 中获取消息。Application2 处理完消息处理后,它会尝试在 Application1 正在侦听的另一个队列(“QueueCold”)中发布处理结果。但问题是,Application2 无法发布消息,但如果我杀死 Application1 进程,Application2 就可以发布,但有趣的是,Application2 刚刚发布的消息保持为 Unacked,即使我刚刚杀死了 Application1,理论上它是唯一的侦听器。因此,如果我再次启动 Application1,他无法捕获消息,因为它是 Unacked,但是如果我杀死 Application2,则消息被释放并且 Application1 最终能够获取消息。

这个问题只发生在我的机器上,导致其他同事启动相同的应用程序,指向同一个 RabbitMq 代理,并且进程运行良好,但在我的情况下,我必须手动完成任务监视器上终止应用程序进程的工作.

我在两个应用程序中都使用了相同的用户,即使更改了其中一个应用程序的用户,问题仍然存在。

我认为它与我的机器的某些配置有关,但这对我来说真的很模糊。

标签: c#rabbitmq

解决方案


推荐阅读