【问题标题】:Stackexchange.Redis, can I publish to multiple channels at once?Stackexchange.Redis,我可以一次发布到多个频道吗?
【发布时间】:2014-06-12 06:00:08
【问题描述】:

我能否使用 glob 样式模式在同一命令中将消息发布到多个通道,例如 Connection.GetSubscriber().Publish("room/*", "my message"),并且消息会发布到与该模式匹配的所有通道?

如果我误解了 Redis 中的基本发布/订阅模式,上述问题可能毫无意义。我的理解是,每个Subscribe 命令都会在 Redis 服务器上建立一个通道,因此服务器知道通道 ID,因此当服务器收到发布命令时,它应该能够将发布的消息“扇出”给所有人匹配 glob 样式模式的通道。如有错误请指正。

另外一个问题,我假设我也可以使用 glob 样式模式订阅多个频道,对吗?

谢谢

【问题讨论】:

  • 不支持多个发布。但是我们可以通过 lua 脚本创建自定义发布 cmd 并使用 EVAL cmd 运行。我对此进行了测试,但值得一试。还要注意 cmd 本质上是原子的,确保通过脚本发布到所有频道。

标签: redis publish subscribe stackexchange.redis


【解决方案1】:

您可以订阅到基于模式的频道订阅,但是当您发布时,您将发布到单个频道名称。所有匹配的订阅(无论是特定的还是基于模式的)都将收到该消息。除了基于全局的订阅之外,没有“扇出”。

【讨论】:

  • 这有点糟糕。我之所以选择 Redis,是因为 RabbitMQ 过于繁重且难以配置和设置。所以现在我添加了一个循环:/
猜你喜欢
  • 2018-06-02
  • 2016-03-27
  • 2018-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-20
  • 2011-11-17
  • 2016-07-13
相关资源
最近更新 更多