import org.fabric3.api.annotation.Producer; public class BuyComponent implements BuyService { @Producer private BuyChannel buyChannel; public void process() { BuyEvent event = //... buyChannel.publish(event);* } } |
The above example uses the default producer name "buyChannel". Alternatively, a name could be specified on the @Producer annotation. The next excerpt subscribes to receive BuyEvents:
import org.fabric3.api.annotation.Consumer; public class BuyListener { @Consumer("buyChannel")* public void onEvent(BuyEvent event) { // ... } } |
Producers, consumers, and channels are configured in a composite:
<composite ...> <component name="BuyComponent"> <implementation.java .../> <producer name="buyChannel" target="BuyChannel"/> </component> <component name="BuyListener"> <implementation.java .../> <consumer name="buyChannel" source="BuyChannel"/> </component> <channel name="BuyChannel"/> </composite> |
In this example, the producer, consumer, and channel are configured in a single composite. In many applications, these may be defined in different composites. For example, a composite may only contain channel definitions, while others contain definitions for producers and consumers.