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.
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>