fabric3
Content
Documentation
Developer Reference
Channels
A Basic Application
A Basic Application
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><span style="color: rgb(51,51,51);">Eventing-style interactions involve a component that acts as a source or producer of events which are dispatched to a channel. In turn, consumer components are configured to listen on a channel for events. Similar to reference injection, a source component is injected with a</span> <span style="color: rgb(51,51,51);"><em>producer</em></span> <span style="color: rgb(51,51,51);">proxy using the Fabric3</span> <span style="color: rgb(51,51,51);"><em>@Producer</em></span> <span style="color: rgb(51,51,51);">annotation. This proxy is responsible for dispatching messages to a</span> <span style="color: rgb(51,51,51);"><em>channel</em></span><span style="color: rgb(51,51,51);">. A component subscribes to a channel using a</span> <span style="color: rgb(51,51,51);"><em>consumer</em></span> <span style="color: rgb(51,51,51);">method. </span></p><p><img class="confluence-embedded-image" loading="lazy" src="https://fabric3.atlassian.net/wiki/download/attachments/524375/Slide8.jpg?version=1&modificationDate=1374523880911&cacheVersion=1&api=v2" data-image-src="https://fabric3.atlassian.net/wiki/download/attachments/524375/Slide8.jpg?version=1&modificationDate=1374523880911&cacheVersion=1&api=v2" data-unresolved-comment-count="0" data-linked-resource-id="1474568" data-linked-resource-version="1" data-linked-resource-type="attachment" data-linked-resource-default-alias="Slide8.jpg" data-base-url="https://fabric3.atlassian.net/wiki" data-linked-resource-content-type="image/jpeg" data-linked-resource-container-id="524375" data-linked-resource-container-version="10" data-media-id="e740339e-0fac-4fd3-8cc3-5402d2b059d4" data-media-type="file" title="fabric3 > A Basic Application > Slide8.jpg" data-location="fabric3 > A Basic Application > Slide8.jpg" data-image-height="405" data-image-width="720"></p><p><span style="color: rgb(51,51,51);">The following is an example of a source component with a an injected producer:</span></p><table class="wysiwyg-macro" data-macro-name="code" data-macro-default-parameter="java" data-macro-schema-version="1" style="background-image: url(https://fabric3.atlassian.net/wiki/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6amF2YX0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>import org.fabric3.api.annotation.Producer; @Component public class BuyComponent implements BuyService { @Producer(target="BuyChannel") private BuyChannel buyChannel; public void process() { BuyEvent event = ... buyChannel.publish(event);* } } </pre></td></tr></table><p>The above producer is connected to the "BuyChannel" channel using the <em>Producer</em> annotation. The next excerpt subscribes to receive <em>BuyEvents:</em></p><table class="wysiwyg-macro" data-macro-name="code" data-macro-default-parameter="java" data-macro-schema-version="1" style="background-image: url(https://fabric3.atlassian.net/wiki/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6amF2YX0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>import org.fabric3.api.annotation.Consumer; @Component public class BuyListener { @Consumer(source="BuyChannel") public void onEvent(BuyEvent event) { ... } } </pre></td></tr></table><p>Channels are configured in a composite using XML or a DSL:</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>In XML: <composite ...> <channel name="BuyChannel"/> </composite> Using the DSL: package f3; public class ChannelProvider { @Provides public static Composite testComposite() { QName name = new QName("urn:test", "ChannelComposite"); ChannelDefinitionBuilder channelBuilder = ChannelDefinitionBuilder.newBuilder("BuyChannel"); return CompositeBuilder.newBuilder(name).channel(channelBuilder.build()).build(); } }</pre></td></tr></table><p>For more details on using the DSL, see <a class="confluence-link" href="/wiki/spaces/FABRIC/pages/15204520/Annotations+and+the+DSL" data-linked-resource-id="15204520" data-linked-resource-version="6" data-linked-resource-type="page" data-linked-resource-default-alias="Annotations and the DSL" data-base-url="https://fabric3.atlassian.net/wiki">Annotations and the DSL</a>.</p>
Save
Close
Edit
Preview
View changes
Revert to last published version
{"serverDuration": 460, "requestCorrelationId": "fb7b6a614e8f4b2290bce9be1fa5aa8c"}