ServiceStack Messaging API:可以广播吗?

问题描述

因为我有previously mentioned,所以我正在使用ServiceStack Messaging APIIMessageQueueClient.Publish)以及更底层的IRedisClient.PublishMessage

当我只需要一个模块/服务的一个实例来处理特定的消息/请求时,我就使用Messaging API,因此即使我可能正在运行多个模块,所有模块都在监听MyRequest,但只有一个服务接收到消息并对其进行处理。

在广播,发布/订阅情况下,我使用IRedisClient.PublishMessage,发送一个请求,每个人都应该收到该特定Redis频道上监听的请求。

但是,在这种情况下,使用Messaging API很有用,但要进行广播,这样,正在监听特定消息类型的所有实例都会收到消息,不只是一个

(这样做的目的是简化我们对Redis的使用以及我们如何订阅事件/请求,但是我现在不对此进行详细介绍。here的背景更多。)

Messaging API是否有“广播方式”?

解决方法

否,ServiceStack Messaging的目的仅仅是通过MQ调用ServiceStack Services。其他任何MQ功能都不在ServiceStack MQ的目的和范围之内,您需要直接针对MQ Provider API进行开发,以访问其广播功能。

Server Events是ServiceStack的一项功能,支持向用户定义的频道的订户广播消息,但是它是一种完全不同的实现,可用于通过HTTP或HTTP发送“服务器推送”实时事件的不同用例gRPC,例如它不使用MQ代理,并且发布/订阅消息也不持久(即,只有在发送消息时的订阅者才能接收它们)。