【问题标题】:Rebus: Combining Pub/Sub and Request/Reply patternsRebus:结合 Pub/Sub 和 Request/Reply 模式
【发布时间】:2017-09-12 22:11:49
【问题描述】:

我需要使用一个具有多个订阅者的发布者,其中每个订阅者只接收具有该订阅者唯一 ID 的消息。每个订阅者都需要能够响应发布者。

Rebus 有可能以某种方式做到这一点吗?

【问题讨论】:

    标签: rebus


    【解决方案1】:

    您可以通过使用 topic-based routing 使用 Rebus 来做到这一点,遗憾的是目前还没有太多的文档记录。

    Rebus 中最突出的 pub/sub API 允许订阅某种类型的消息

    await bus.Subscribe<SomeMessage>();
    

    但它在幕后所做的是为主题SomeMessageAssembly.SomeMessage, SomeMessageAssembly(即类型的简单程序集限定名称)建立订阅。

    您可以通过bus.Advanced.Routing API 访问主题,因此在您的情况下,您的订阅者只需为他们感兴趣的主题建立适当的订阅,然后发布者会将每个事件发布到适当的主题。

    您可以在this sample 中查看基于主题的订阅。但请注意,此示例恰好使用了 RabbitMQ 的一个特殊功能,该功能允许在主题中使用通配符,但目前仅支持 RabbitMQ。

    我确实有一个问题要问您:您确定要为此发布/订阅吗?这听起来更像是对我的请求/回复。如果每个“事件”都针对一个特定的接收者,而“发布者”期望得到回复,我会称之为请求/回复并使用显式路由:

    var destinationQueue = "queuename_of_specific_recipient";
    var request = new SomeRequest { ... };
    
    await bus.Advanced.Routing.Send(destinationQueue, request);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-02
      • 1970-01-01
      • 2017-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多