【问题标题】:Different readers on same service bus queue?同一服务总线队列上的不同读者?
【发布时间】:2017-12-04 13:39:40
【问题描述】:

假设我们有 4 种不同类型的消息:Type1、Type2、Type3 和 Type 4。

由于 FIFO 功能的需要,我们有一个带有会话的服务总线队列。

我们还有两个消息作者。第一个消息编写器负责创建类型 1 和类型 2 的消息,其中编写器 #2 负责创建类型 3 和类型 4 的消息。这是简单的部分。

现在我希望能够创建两个阅读器,阅读器 1 和阅读器 2。

Reader1 必须读取 type1 和 type2 类型的消息。 Reader2 必须读取 type3 和 type4 的消息。

但我不知道如何实现这一点。因为如果 reader1 读取 type3 的消息,它需要放弃它,因为 reader1 不能只处理 type1 和 type2 的消息。在最坏的情况下,reader1 将被消息卡住,直到它被扔到死信队列中。

创建两个不同阅读器的原因是因为它们位于两个完全不同的域中,具有完全不同的功能。

我怎样才能实现所需的功能?

【问题讨论】:

    标签: queue azureservicebus servicebus azure-servicebus-queues


    【解决方案1】:

    您需要为此使用服务总线主题和订阅。

    作家将消息发布到主题。然后两个读者都订阅该主题,每个订阅都可以根据消息类型进行过滤。

    请参阅“主题和订阅”in the docs

    【讨论】:

    • 但是每条消息都会被处理两次,因为在主题中所有订阅者都会收到相同的消息,还是我误解了什么?
    • 取决于你。对于每个订阅,您可以创建一个过滤器,它将限制哪些消息通过。阅读文档中的“规则和操作”部分。
    • 对。这是主要的设计点。主题被创建......有多个订阅者,订阅者(通过规则)可以决定他们是否对消息感兴趣。根据您的“类型”为您的消息添加自定义属性,然后使用基于此自定义属性值的规则。
    猜你喜欢
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 2017-02-25
    • 2015-10-30
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 2015-07-18
    相关资源
    最近更新 更多