与 RabbitMQ 的全双工通信

问题描述 投票:0回答:1

我们有一个消息传递应用程序,它在 .NET Framework 服务上使用 SignalR 连接到各种客户端(浏览器中的本机移动 + 网络)。我们正在考虑用 RabbitMQ 替换 SignalR 的可能性,以便能够以全双工方式促进服务和各种客户端之间的来回通信。这会是 RabbitMQ 的可行用例吗?在 RabbitMQ tutorials 中,我没有看到匹配的特定示例。 RPC 示例 已关闭,但看起来客户端发起连接,服务器获取连接、处理连接并发送回复。连接被服务器端阻塞。客户端和服务器既是生产者又是消费者,并且它们可以通过订阅的队列异步发送/接收消息的用例是否可行?

我不太确定在哪里问这个问题,如果最好在不同的堆栈交换中问这个问题,请告诉我。

c# asp.net-core rabbitmq signalr
1个回答
0
投票

是的,RabbitMQ 可以成为消息应用程序中 SignalR 的可行替代品。 RabbitMQ 可以促进您的服务与使用队列异步发送和接收消息的各种客户端之间的全双工通信。

在RabbitMQ中,客户端和服务器都可以充当生产者和消费者,它们可以通过订阅的队列异步发送和接收消息。客户端可以生成服务器使用的消息,反之亦然。

要在 RabbitMQ 中实现这一点,您需要创建单独的队列,用于将消息从服务器发送到客户端以及从客户端发送到服务器。每个客户端都会从服务器用来向客户端发送消息的队列中消费消息,而服务器会从每个客户端用来向服务器发送消息的队列中消费消息。

这样,任何一方发送的消息都将通过各自的队列异步传递给另一方。

希望对您有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.