0

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

  • 订单主题
  • 发票主题

当一个应用程序发布一个“事件”ProductOrderedEvent时,所有对此事件感兴趣的主题都可以订阅它。所以它看起来像这样:

  • 订单主题
    • ProductOrderedEvent
    • 其他事件
  • 发票主题
    • ProductOrderedEvent
    • SomeOtherInvoiceEvent
    • 等等

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

我只是想按上下文按代码分组。关于产品的一切都应该存在于 中ProductsTopic,关于订单的一切都应该存在于OrdersTopicetc中。

但我不想在我的代码中明确命名每个主题。我只想发布一个事件,对此事件感兴趣的任何主题的订阅者应该能够选择这个事件。

是否可以将事件/消息发布到简单的所有主题而不明确命名它们?或者我应该简单地将我的主题命名为“MyOrganizationName”并将所有订阅者都放在那里?

4

1 回答 1

0

虽然您不能在不命名主题的情况下向主题发送消息,但是您可以拥有一个“包罗万象”的主题、带有主题过滤器的订阅以及根据需要将消息转发到不同的链接实体

对于您的示例,您将具有以下设置

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

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

请阅读使用自动转发时要考虑的注意事项。

于 2020-10-27T16:46:34.197 回答