c# - 当侦听器连接到队列时,发布者无法在 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 代理,并且进程运行良好,但在我的情况下,我必须手动完成任务监视器上终止应用程序进程的工作.
我在两个应用程序中都使用了相同的用户,即使更改了其中一个应用程序的用户,问题仍然存在。
我认为它与我的机器的某些配置有关,但这对我来说真的很模糊。
解决方案
推荐阅读
- java - 扩展主机意外终止(vscode)
- python - Pandas 除法返回所有 NaN 的数据帧
- unicode - 仅将非 utf-8 文件转换为 utf-8
- python - 为 Python 3.8 Azure 函数加载 azure-cosmos 库时遇到问题
- javascript - rxjs observable.pipe 未在 HttpTestingController 中触发
- javascript - 如何在 d3 中使用 CSV 高度、重量、半径和颜色创建圆圈
- java - Java大内存映射
- android - Android Studio项目不同模块中的访问常量
- pytorch - 使用 fastai 的 learn.lr_find() 选择 learning_rate
- html - 如何让 LI 元素包裹在 UL 中?