fabric3
Content
Documentation
Developer Reference
Channels
Local and Remote Channels
Local and Remote Channels
search
attachments
weblink
advanced
image-effects
image-attributes
Paragraph
Paragraph
Heading 1
Heading 2
Heading 3
Heading 4
Heading 5
Heading 6
Preformatted
Quote
Bold
Italic
Underline
Colour picker
More colours
Formatting
Strikethrough
Subscript
Superscript
Monospace
Clear formatting
Bullet list
Numbered list
Task list
Outdent
Indent
Align left
Align center
Align right
Page layout
Link
Table
Insert
Insert content
Files and images
Link
Symbol
Emoticon
Markup
Horizontal rule
Insert macro
User mention
Jira Issue/Filter
Info
Status
Gallery
Table of Contents
Jira timeline
Lucidchart Diagrams
Trello Board
Other macros
Page layout
No layout
Two column (simple)
Two column (simple, left sidebar)
Two column (simple, right sidebar)
Three column (simple)
Two column
Two column (left sidebar)
Two column (right sidebar)
Three column
Three column (left and right sidebars)
Find/Replace
Keyboard shortcuts help
You are not logged in. Any changes you make will be marked as
anonymous
. You may want to
Log In
if you already have an account.
<p>This section outlines the differences between local and remote channels.</p><h2>Local Channels</h2><p>Channels may be configured with bindings. If producers and consumers are connected to a channel with no bindings and all are in the same zone, the channel is local. That is, events will be sent in-VM and not over a remote transport.</p><p>If a local channel is deployed to a clustered zone (that is, a zone with two or more runtimes), by default events will not be replicated between runtimes. The following figure illustrates a non-replicating channel deployed to two runtimes in the same zone: </p><p><img class="confluence-embedded-image" height="600" width="800" loading="lazy" src="https://fabric3.atlassian.net/wiki/download/thumbnails/524376/local.channels.jpg?version=2&modificationDate=1303457132037&cacheVersion=1&api=v2&width=800" data-image-src="https://fabric3.atlassian.net/wiki/download/attachments/524376/local.channels.jpg?version=2&modificationDate=1303457132037&cacheVersion=1&api=v2" data-unresolved-comment-count="0" data-linked-resource-id="1015822" data-linked-resource-version="2" data-linked-resource-type="attachment" data-linked-resource-default-alias="local.channels.jpg" data-base-url="https://fabric3.atlassian.net/wiki" data-linked-resource-content-type="image/jpeg" data-linked-resource-container-id="524376" data-linked-resource-container-version="16" data-media-id="12717e02-f859-4274-9031-6674106dff3e" data-media-type="file" title="fabric3 > Local and Remote Channels > local.channels.jpg" data-location="fabric3 > Local and Remote Channels > local.channels.jpg" data-image-height="540" data-image-width="720"></p><p>In the above scenario, event A sent by the producer hosted on the first runtime will only be received by the two consumers on the first runtime. Likewise, event B sent by the producer on the second runtime will only be received by the consumers on the second two consumers on the second runtime. </p><h2>Remote Channels</h2><p>A channel is considered remote in two cases:</p><ul><li>The channel is configured with a binding</li><li>The channel is deployed in a different zone than connected producers and consumers</li></ul><h5>Bound Channels</h5><p>If a channel is configured with a binding, events sent by connected producers will be dispatched to the remote transport specified by the binding, regardless of whether the producer is in the same zone as the channel. Explicitly configuring a channel binding in this way is useful when events need to be observed by a system that is external to the domain. Configuring a channel binding is also useful when external events need to be observed by a consumer. In this case, a bound channel will listen on a remote transport and forward events sent by remote systems to connected consumers.</p><h5>Remote Producers and Consumers</h5><p>If a channel is deployed to a different zone than connected producers or consumers, Fabric3 will bind the channel to a broadcast-capable remote transport (for example, a JMS Topic or ZeroMQ Pub/Sub socket). In this scenario, events will be replicated to all connected consumers, regardless of their origin. The following figure shows this:</p><p><img class="confluence-embedded-image" width="800" loading="lazy" src="https://fabric3.atlassian.net/wiki/download/thumbnails/524376/bound.channels.jpg?version=1&modificationDate=1303472011522&cacheVersion=1&api=v2&width=800" data-image-src="https://fabric3.atlassian.net/wiki/download/attachments/524376/bound.channels.jpg?version=1&modificationDate=1303472011522&cacheVersion=1&api=v2" data-unresolved-comment-count="0" data-linked-resource-id="1015825" data-linked-resource-version="1" data-linked-resource-type="attachment" data-linked-resource-default-alias="bound.channels.jpg" data-base-url="https://fabric3.atlassian.net/wiki" data-linked-resource-content-type="image/jpeg" data-linked-resource-container-id="524376" data-linked-resource-container-version="16" data-media-id="1ab4e05b-ccf7-474e-b84b-d7b46e000879" data-media-type="file" title="fabric3 > Local and Remote Channels > bound.channels.jpg" data-location="fabric3 > Local and Remote Channels > bound.channels.jpg" data-image-height="540" data-image-width="720"></p><h2>Replicating Channels</h2><p>Local channels can be configured to replicate events to all runtimes in a zone by setting the requires attribute on the channel definition as follows:</p><table class="wysiwyg-macro" data-macro-name="code" data-macro-default-parameter="xml" data-macro-schema-version="1" style="background-image: url(https://fabric3.atlassian.net/wiki/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6eG1sfQ&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre><composite xmlns:f3="urn:fabric3.org" ...> <channel name="SomeChannel" requires="f3:replication"/> <composite> </pre></td></tr></table><p>In this scenario, events emitted by the producers on both runtimes will be received by all consumers connected to the channel in the zone. The following figure illustrates event replication: </p><p><img class="confluence-embedded-image" width="800" loading="lazy" src="https://fabric3.atlassian.net/wiki/download/thumbnails/524376/local.replicating.channels.jpg?version=1&modificationDate=1303457131796&cacheVersion=1&api=v2&width=800" data-image-src="https://fabric3.atlassian.net/wiki/download/attachments/524376/local.replicating.channels.jpg?version=1&modificationDate=1303457131796&cacheVersion=1&api=v2" data-unresolved-comment-count="0" data-linked-resource-id="1015826" data-linked-resource-version="1" data-linked-resource-type="attachment" data-linked-resource-default-alias="local.replicating.channels.jpg" data-base-url="https://fabric3.atlassian.net/wiki" data-linked-resource-content-type="image/jpeg" data-linked-resource-container-id="524376" data-linked-resource-container-version="16" data-media-id="a103fe83-9c76-4830-8b16-7b8672a7c208" data-media-type="file" title="fabric3 > Local and Remote Channels > local.replicating.channels.jpg" data-location="fabric3 > Local and Remote Channels > local.replicating.channels.jpg" data-image-height="540" data-image-width="720"></p><p>For applications that require events to be broadcast across JVMs, using bound channel is recommended over a local replicating channel as performance is likely to be better.</p>
Save
Close
Edit
Preview
View changes
Revert to last published version
{"serverDuration": 414, "requestCorrelationId": "e2db33fcd33e426f881b9fc24d437426"}