如何在Azure Service Bus中管理主题和事件/消息的发布?

问题描述

最初,我认为您可以将主题视为微服务。例如,您可能具有以下主题

  • OrderTopic
  • Invoicetopic

当应用程序发布“ {@ 1}”之类的“事件”时,对该事件感兴趣的所有主题都可以订阅该事件。这样看起来像这样:

  • OrderTopic
    • ProductOrderedEvent
    • SomeOtherEvent
  • 发票主题
    • ProductOrderedEvent
    • SomeOtherInvoiceEvent

但是,当我尝试发布事件(或消息)时,我必须明确命名要将事件发布到的主题。所以我想我对“主题”一词的看法是错误的。

我只是想按上下文对代码进行分组。有关产品的所有内容都应放在ProductOrderedEvent中,有关订单的所有内容都应放在ProductsTopic中,等等。

但是我不想在代码中明确命名每个主题。我只想发布一个事件,并且对该事件感兴趣的主题订阅者都应该能够参加该事件。

是否可以将事件/消息发布到所有主题,而无需明确命名?还是我应该简单地将主题命名为“ MyOrganizationName”,然后将所有订阅者都放在其中?

解决方法

尽管您不能在不命名主题的情况下向主题发送消息,但是您可以拥有一个“包罗万象”的主题,并根据需要订阅topic filtersforward messages to different chained entities

在您的示例中,您将使用以下设置

CatchAllTopic
|__ OrderSubscription
|   |__ OrderTopic 
|__ InvoiceSubscription
    |__ InvoiceTopic

因此,您的所有应用程序都会向CatchAllTopic发送消息,每个订阅都在该消息上过滤所需的消息并将其转发到各自的主题。

请阅读 considerations,以在使用自动转发时予以考虑。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...