如前所述,我正在使用servicestack消息传递api( IMessageQueueClient.Publish
)以及更低级的 IRedisClient.PublishMessage
.
当我需要一个模块/服务的一个示例来处理一个特定的消息/请求时,我使用消息传递api,因此尽管我可能有几个模块运行,所有模块都在侦听 MyRequest
,只有一个服务接收并处理消息。
我使用 IRedisClient.PublishMessage
当我做一个广播,一个酒吧/酒吧的情况下,发送一个请求,每个人都应该收到,在特定的redis频道收听。
但是,我遇到的情况是,使用消息传递api会很有用,但是要进行广播,以便所有侦听特定消息类型的示例都能获得消息,而不仅仅是一个。
(这样做的原因是为了简化我们对redis的使用,以及我们如何订阅事件/请求,但我现在将不详细介绍这一点。这里有更多的背景知识。)
消息传递api有“广播方式”吗?
1条答案
按热度按时间yfwxisqw1#
不,servicestack消息传递的目的只是通过mq调用servicestack服务。任何其他mq特性都超出了servicestackmq的目的和范围,您需要直接针对mq提供者api进行开发,以访问它们的广播特性。
服务器事件是一种servicestack功能,它支持向用户定义的频道的订阅者广播消息,但它是一种完全不同的实现,用于通过http或grpc发送“服务器推送”实时事件,例如,它不使用mq代理,并且发布/订阅消息不是持久性的(即,只有在发送消息时订户才会接收消息)。