6.2. publish-Subscribe Channel


概述

发布订阅频道 (如 图 6.2 “发布订阅频道模式” 所示)是一个 第 5.2 节 “消息频道”,它可让多个订阅者消耗任何给定消息。这与 第 6.1 节 “point-to-Point 频道” 相反。发布订阅通道经常用作向多个订阅者广播事件或通知的方法。

图 6.2. 发布订阅频道模式

发布订阅频道模式

支持发布订阅频道的组件

以下 Apache Camel 组件支持发布订阅频道模式:

  • JMS
  • ActiveMQ
  • XMPP
  • SEDA 用于处理同一 CamelContext 中的 SEDA,可在 pub-sub 中工作,但允许多个消费者。
  • 请参阅 Apache Camel 组件参考指南 中的 VM 作为 SEDA,但在同一 JVM 中使用。

JMS

在 JMS 中,发布订阅通道由 主题 表示。例如,您可以指定名为 StockQuotes 的 JMS 主题的端点 URI,如下所示:

jms:topic:StockQuotes

如需了解更多详细信息,请参阅 Apache Camel 组件参考指南 中的 Jms

ActiveMQ

在 ActiveMQ 中,发布订阅通道由主题表示。例如,您可以为名为 StockQuotes 的 ActiveMQ 主题指定端点 URI,如下所示:

activemq:topic:StockQuotes

如需了解更多详细信息,请参阅 Apache Camel 组件参考指南 中的 ActiveMQ

XMPP

XMPP (Jabber)组件在组通信模式中使用时支持发布订阅频道模式。如需了解更多详细信息,请参阅 Apache Camel 组件参考指南 中的 Xmpp

静态订阅列表

如果您愿意,您也可以在 Apache Camel 应用程序本身中实施发布订阅逻辑。简单的方法是定义一个 静态订阅列表,其中目标端点在路由末尾都明确列出。但是,这种方法不像 JMS 或 ActiveMQ 主题而灵活。

Java DSL 示例

以下 Java DSL 示例演示了如何使用单个发布程序 seda:a,以及三个订阅者,seda:bseda:c、seda:c 和 seda:d 模拟发布订阅频道:

from("seda:a").to("seda:b", "seda:c", "seda:d");
注意

这仅适用于 InOnly 消息交换模式。

XML 配置示例

以下示例演示了如何在 XML 中配置相同的路由:

<camelContext id="buildStaticRecipientList" xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="seda:a"/>
    <to uri="seda:b"/>
    <to uri="seda:c"/>
    <to uri="seda:d"/>
  </route>
</camelContext>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.