5.2. Publish-Subscribe Channel

    xiaoxiao2021-03-25  113

    Overview

    A publish-subscribe channel, shown in Figure 5.2, “Publish Subscribe Channel Pattern”, is a message channel that enables multiple subscribers to consume any given message. This is in contrast with a point-to-point channel. Publish-subscribe channels are frequently used as a means of broadcasting events or notifications to multiple subscribers.

    Figure 5.2. Publish Subscribe Channel Pattern 

    Components that support publish-subscribe channel

    The following Apache Camel components support the publish-subscribe channel pattern:

    JMS ActiveMQ XMPP SEDA for working with SEDA in the same CamelContext which can work in pub-sub, but allowing multiple consumers. VM as SEDA, but for use within the same JVM.

    JMS

    In JMS, a publish-subscribe channel is represented by a topic. For example, you can specify the endpoint URI for a JMS topic called StockQuotes as follows:

    jms:topic:StockQuotes

    See for more details.

    ActiveMQ

    In ActiveMQ, a publish-subscribe channel is represented by a topic. For example, you can specify the endpoint URI for an ActiveMQ topic called StockQuotes, as follows:

    activemq:topic:StockQuotes

    See for more details.

    XMPP

    The XMPP (Jabber) component supports the publish-subscribe channel pattern when it is used in the group communication mode. See for more details.

    Static subscription lists

    If you prefer, you can also implement publish-subscribe logic within the Apache Camel application itself. A simple approach is to define a static subscription list, where the target endpoints are all explicitly listed at the end of the route. However, this approach is not as flexible as a JMS or ActiveMQ topic.

    Java DSL example

    The following Java DSL example shows how to simulate a publish-subscribe channel with a single publisher, seda:a, and three subscribers, seda:b, seda:c, and seda:d:

    from("seda:a").to("seda:b", "seda:c", "seda:d");
    转载请注明原文地址: https://ju.6miu.com/read-35108.html

    最新回复(0)