我有两个.net应用程序通过两个RabbitMq队列相互通信。它是这样的:
Application1将消息发布到一个队列中,我将其命名为“ QueueHot”,并标识出他刚刚发布消息的那个队列没有侦听器,然后初始化另一个.net应用程序(Application2),并传递以“ QueueHot”作为参数。然后Application2启动,它开始侦听QueueHot,然后设法从该Queue中获取消息。在Application2处理完消息处理之后,它随后尝试将处理结果发布到Application1正在侦听的另一个队列(“ QueueCold”)中。但是问题在于,Application2无法发布消息,但是如果我杀死了Application1进程,那么Application2就可以发布,但这是有趣的事情,刚刚发布的Application2消息仍然为Unacked,即使我刚刚杀死了Application1,从理论上讲,它是唯一的侦听器。因此,如果我再次启动Application1,他将无法捕获该消息,因为它没有被确认,但是如果我杀死了Application2,该消息将被释放,Application1最终将能够获得该消息。
此问题仅发生在我的机器上,导致其他同事启动相同的应用程序,指向相同的RabbitMq代理,并且该过程运行良好,但就我而言,我必须执行此手动操作来终止应用程序进程在任务监视器上。
我在两个应用程序中都使用了相同的用户,即使更改了其中一个应用程序的用户,问题仍然存在。
我认为它与我的机器的某些配置有关,但是对我来说真的很模糊。