azure - 如何在 Azure 服务总线中管理主题和事件/消息的发布?
问题描述
最初我以为您可以将主题视为微服务。例如,您可能有以下主题:
- 订单主题
- 发票主题
当一个应用程序发布一个“事件”ProductOrderedEvent
时,所有对此事件感兴趣的主题都可以订阅它。所以它看起来像这样:
- 订单主题
- ProductOrderedEvent
- 其他事件
- 发票主题
- ProductOrderedEvent
- SomeOtherInvoiceEvent
- 等等
但是当我尝试发布一个事件(或者消息)时,我必须明确地命名我想要将事件发布到的主题。所以我想我对“主题”一词的看法是错误的。
我只是想按上下文按代码分组。关于产品的一切都应该存在于 中ProductsTopic
,关于订单的一切都应该存在于OrdersTopic
etc中。
但我不想在我的代码中明确命名每个主题。我只想发布一个事件,对此事件感兴趣的任何主题的订阅者应该能够选择这个事件。
是否可以将事件/消息发布到简单的所有主题而不明确命名它们?或者我应该简单地将我的主题命名为“MyOrganizationName”并将所有订阅者都放在那里?
解决方案
虽然您不能在不命名主题的情况下向主题发送消息,但是您可以拥有一个“包罗万象”的主题、带有主题过滤器的订阅以及根据需要将消息转发到不同的链接实体。
对于您的示例,您将具有以下设置
CatchAllTopic
|__ OrderSubscription
| |__ OrderTopic
|__ InvoiceSubscription
|__ InvoiceTopic
因此,您的所有应用程序都会将消息发送到CatchAllTopic
,每个订阅都会在其中过滤所需的消息并将它们转发到各自的主题。
请阅读使用自动转发时要考虑的注意事项。
推荐阅读
- c++ - C ++ - Boost streambuf放气的行为不一致?
- css - 如何使用 CSS 创建一个带有凹槽的矩形?
- sql - Oracle XMLTYPE 根据条件从节点中提取第一行值
- windows - 如何将我的 AWS CLI 驱动器从 H 更改为 C
- python - 使用 Python ElementTree 在另一个 xml 文件的节点中插入一个 xml 文件
- amazon-web-services - Terraform 从 TG 路由表和 TG 附件 vpns 创建 map/dict 以在资源 aws_ec2_transit_gateway_route_table_association 中引用
- macos - 使用 Mac Big Sur 安装 upx
- android - 自定义视图未在 BottomSheetDialogFragment 中绘制,有时在无效后调用 onSizeChanged
- c# - 积分系统无法正常工作 Unity(Visual Studio C#)
- c# - Power BI embed API 访问令牌请求通过 Postman 而不是通过代码工作