Publish Subscribe Channel

Camel supports the Publish Subscribe Channel from the EIP patterns using for example the following components:

  • JMS for working with JMS Topics for high performance, clustering and load balancing

  • XMPP when using rooms for group communication

  • SEDA for working with SEDA in the same CamelContext which can work in pub-sub, but allowing multiple consumers.

  • VM as SEDA but for intra-JVM.

image

Samples

Another option is to explicitly list the publish-subscribe relationship in your routing logic; this keeps the producer and consumer decoupled but lets you control the fine grained routing configuration using the DSL or Xml Configuration.

In Java code:

from("direct:a")
    .multicast()
      .to("direct:b")
      .to("direct:c")
      .to("direct:d")
    .end() // end multicast

And in XML:

<camelContext xmlns="http://camel.apache.org/schema/spring">
    <route>
        <from uri="direct:a"/>
        <multicast>
            <to uri="direct:b"/>
            <to uri="direct:c"/>
            <to uri="direct:d"/>
        </multicast>
    </route>
</camelContext>