This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new dcb33f0 CAMEL-16861: Cleanup and update EIP docs
dcb33f0 is described below
commit dcb33f089d14793a897dd4b738821793410e9e82
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon Oct 11 12:23:43 2021 +0200
CAMEL-16861: Cleanup and update EIP docs
---
.../modules/eips/pages/point-to-point-channel.adoc | 2 +
.../docs/modules/eips/pages/process-manager.adoc | 21 ++++---
.../eips/pages/publish-subscribe-channel.adoc | 69 +++++++++++-----------
3 files changed, 52 insertions(+), 40 deletions(-)
diff --git
a/core/camel-core-engine/src/main/docs/modules/eips/pages/point-to-point-channel.adoc
b/core/camel-core-engine/src/main/docs/modules/eips/pages/point-to-point-channel.adoc
index 2643815..92a9347 100644
---
a/core/camel-core-engine/src/main/docs/modules/eips/pages/point-to-point-channel.adoc
+++
b/core/camel-core-engine/src/main/docs/modules/eips/pages/point-to-point-channel.adoc
@@ -21,6 +21,8 @@ The Point to Point Channel is supported in Camel by messaging
based xref:compone
There are also messaging based in the cloud from cloud providers such as
Amazon, Google and Azure.
+TIP: See also the related xref:publish-subscribe-channel.adoc[Publish Scribe
Channel] EIP
+
== Example
The following example demonstrates point to point messaging using
diff --git
a/core/camel-core-engine/src/main/docs/modules/eips/pages/process-manager.adoc
b/core/camel-core-engine/src/main/docs/modules/eips/pages/process-manager.adoc
index af6ceed..60a06d0 100644
---
a/core/camel-core-engine/src/main/docs/modules/eips/pages/process-manager.adoc
+++
b/core/camel-core-engine/src/main/docs/modules/eips/pages/process-manager.adoc
@@ -4,12 +4,6 @@ Camel supports the
https://www.enterpriseintegrationpatterns.com/patterns/messaging/ProcessManager.html[Process
Manager]
from the xref:enterprise-integration-patterns.adoc[EIP patterns] book.
-The xref:routingSlip-eip.adoc[Routing Slip] demonstrates how a message can be
routed through a dynamic series of processing steps.
-The solution of the Routing Slip is based on two key assumptions: the sequence
of processing steps has
-to be determined up-front and the sequence is linear. In many cases, these
assumptions may not be fulfilled.
-For example, routing decisions might have to be made based on intermediate
results.
-Or, the processing steps may not be sequential, but multiple steps might be
executed in parallel.
-
How do we route a message through multiple processing steps when the required
steps may not be known
at design-time and may not be sequential?
@@ -18,7 +12,20 @@ image::eip/ProcessManager.gif[image]
Use a central processing unit, a Process Manager, to maintain the state of the
sequence and determine
the next processing step based on intermediate results.
-With Camel this pattern is implemented by using the
xref:dynamicRouter-eip.adoc[Dynamic Router] pattern.
+With Camel this pattern is implemented by using the
xref:dynamicRouter-eip.adoc[Dynamic Router] EIP.
Camel's implementation of the dynamic router maintains the state of the
sequence, and allows
to determine the next processing step based dynamically.
+== Routing Slip vs Dynamic Router
+
+On the other hand the xref:routingSlip-eip.adoc[Routing Slip] EIP demonstrates
how a message can be routed
+through a dynamic series of processing steps. The solution of the Routing Slip
is based on two key assumptions:
+
+- the sequence of processing steps has to be determined up-front
+- and the sequence is linear.
+
+In many cases, these assumptions may not be fulfilled.
+For example, routing decisions might have to be made based on intermediate
results.
+Or, the processing steps may not be sequential, but multiple steps might be
executed in parallel.
+
+
diff --git
a/core/camel-core-engine/src/main/docs/modules/eips/pages/publish-subscribe-channel.adoc
b/core/camel-core-engine/src/main/docs/modules/eips/pages/publish-subscribe-channel.adoc
index 8e8c774..aeead0b 100644
---
a/core/camel-core-engine/src/main/docs/modules/eips/pages/publish-subscribe-channel.adoc
+++
b/core/camel-core-engine/src/main/docs/modules/eips/pages/publish-subscribe-channel.adoc
@@ -1,53 +1,56 @@
= Publish Subscribe Channel
Camel supports the
-http://www.enterpriseintegrationpatterns.com/PublishSubscribeChannel.html[Publish
-Subscribe Channel] from the
-xref:enterprise-integration-patterns.adoc[EIP patterns] using for
-example the following components:
-
-* xref:components::jms-component.adoc[JMS] for working with JMS Topics for
high performance,
-clustering and load balancing
-* xref:components::xmpp-component.adoc[XMPP] when using rooms for group
communication
-* xref:components::seda-component.adoc[SEDA] for working with SEDA in the same
-xref:latest@manual:ROOT:camelcontext.adoc[CamelContext] which can work in
pub-sub, but
-allowing multiple consumers.
-* xref:components::vm-component.adoc[VM] as SEDA but for intra-JVM.
+http://www.enterpriseintegrationpatterns.com/PublishSubscribeChannel.html[Publish
Subscribe Channel]
+from the xref:enterprise-integration-patterns.adoc[EIP patterns].
+
+How can the sender broadcast an event to all interested receivers?
image::eip/PublishSubscribeSolution.gif[image]
-[[PublishSubscribeChannel-Samples]]
-== Samples
+Send the event on a Publish-Subscribe Channel, which delivers a copy of a
particular event to each receiver.
+
+The Publish-Subscribe Channel is supported in Camel by messaging based
xref:components::index.adoc[Components], such as:
+
+* xref:components::amqp-component.adoc[AMQP] for working with AMQP Queues
+* xref:components::jms-component.adoc[ActiveMQ], or
xref:components::jms-component.adoc[JMS] for working with JMS Queues
+* xref:components::seda-component.adoc[SEDA] for internal Camel seda queue
based messaging
+* xref:components::spring-rabbitmq-component.adoc[Spring RabbitMQ] for working
with AMQP Queues (RabbitMQ)
+
+There are also messaging based in the cloud from cloud providers such as
Amazon, Google and Azure.
+
+TIP: See also the related xref:point-to-point-channel.adoc[Point to Point
Channel] EIP
-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
-xref:latest@manual:ROOT:dsl.adoc[DSL].
+== Example
-In Java code:
+The following example demonstrates publish sbuscriber messaging using
+the xref:components::jms-component.adoc[JMS] component with JMS topics:
[source,java]
----
-from("direct:a")
- .multicast()
- .to("direct:b")
- .to("direct:c")
- .to("direct:d")
- .end() // end multicast
+from("direct:start")
+ .to("jms:topic:cheese");
+
+from("jms:topic:cheese")
+ .to("bean:foo");
+
+from("jms:topic:cheese")
+ .to("bean:bar");
----
And in XML:
[source,xml]
----
-<camelContext xmlns="http://camel.apache.org/schema/spring">
+<routes>
<route>
- <from uri="direct:a"/>
- <multicast>
- <to uri="direct:b"/>
- <to uri="direct:c"/>
- <to uri="direct:d"/>
- </multicast>
+ <from uri="direct:start"/>
+ <to uri="jms:queue:foo"/>
</route>
-</camelContext>
+ <route>
+ <from uri="jms:queue:foo"/>
+ <to uri="bean:foo"/>
+ </route>
+</routes>
----
+