Producers, consumers, and channels specify required qualities of service using SCA policy.
Transactional Receive
A JMS consumer can be configured to receive an event in the context of a transaction using the @ManagedTransaction or requires attribute in a composite.
Synchronous Delivery
By default, channels propagate events asynchronously. In some cases, it is useful to maintain event ordering by requiring that a channel dispatch events synchronously. In Fabric3, local channels can be configured to dispatch synchronously by setting the requires attribute to use "synchronous":
<composite xmlns:f3="urn:fabric3.org" ...> <channel name="SomeChannel" requires="f3:synchronous"/> </composite>
Durable Channels
By default, channels are not durable. That is, messages are not persisted prior to delivery. A channel can be declared durable by setting the requires attribute to use "durable":
<composite xmlns:f3="urn:fabric3.org" ...> <channel name="SomeChannel" requires="f3:durable"/> </composite>
Setting the channel to durable will result in channel binding transports using durable messaging to deliver events. Note setting a local channel to durable has no effect.
Non-Persistent Channels
By default, Fabric3 will use persistent messaging when a channel is bound to a messaging transport. Non-persistent messaging can be enabled by setting the requires attribute to use "nonPersistent":
<composite xmlns:f3="urn:fabric3.org" ...> <channel name="SomeChannel" requires="f3:nonPersistent"/> </composite>