将 SignalR 与 RabbitMQ 结合使用

Using SignalR with RabbitMQ

我正在编写一个应用程序,其中有关数据更改的消息通过 API 通过 RabbitMQ 消息总线发布。消息由 SignalR 集线器使用并推送到订阅的客户端。

现在我在我的事件日志中发现以以下内容开头的消息:

Exception: System.Threading.ThreadAbortException: Thread was being aborted.

我发现了 SO 问题和答案,例如: Why am i getting "Thread was being aborted" in asp.net?What exactly is Appdomain recycling

但这提出了一个问题,如果应用程序池中 AppDomain 中的 运行ning 应用程序在不活动时被回收,SignalR 如何保持与订阅客户端的连接? 为什么 SignalR 在 IIS 应用程序池中 运行 但在 RabbitMQ 消费者中不起作用?

SignalR 提供的 SignalR 客户端库可能具有默认行为一旦失去连接就重新连接(JS 确实如此)。

因此,使用池回收只会让您的客户端重新连接到您的服务器,像中断前一样再次接收消息。