我有一个SignalR应用程序,该应用程序使用RabbitMq在后台进行消息处理。 (.Net Core 2.1) 流程是这样的:
现在我的问题在第4步中。那东西,我不知道该放在哪里。
首先,我很难将其放入SignalR集线器中,因此SignalR集线器将订阅RabbitMq队列并处理消息。但是SignalR集线器是短暂的,可以在每个请求上重新创建,因此,当RabbitMq消息出队时,SignalR集线器上下文已经被处理。
然后,我很难在应用程序启动时创建单例服务并在那里预订RabbitMq队列,但是在应用程序启动时,我不知道谁是需要订阅RabbitMq队列的客户端。 要求是为每个连接到SignalR集线器的消费者客户端进行订阅。
因为我使用“主题”交换,其中仅当连接了消费者客户端时才知道主题和clientId,所以当消费者客户端连接到SignalR集线器时,我需要订阅RabbitMq。 (SignalR集线器上的OnConnected方法)
在这方面,我需要帮助,如何在连接的SignalR客户端上订阅RabbitMq队列,这需要长期存在。并且cliendId