Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current Restore this Version View Page History

« Previous Version 2 Next »

Fabric3 supports low-latency, high performance communications between clients and services and producers and consumers (Pub/Sub) via a binding built on the ZeroMQ Library. The following messaging patterns are supported:

  • Non-blocking queue-based messaging
  • Non-blocking pub/sub messaging
  • Request-reply messaging
  • Callbacks

It is recommended for performance reasons that services uses non-blocking (asynchronous) ZeroMQ messaging, that is, either one-way service invocations or channels. If a service needs to return a response to a client, callbacks will generally scale better than blocking-request-response messaging.

Channel (Pub/Sub) Communications

ZeroMQ can be used to bind a channel so that producers and consumers can connect to it remotely. In the following example, ProducerComposite and ConsumerComposite are deployed to different zones (they could also be deployed to the same zone). Fabric3 will transparently setup ZeroMQ pub/sub sockets and propagate the socket addresses so that the publisher and consumer can connect remotely:

 

The following excerpt shows how this channel binding is configured:

<composite name="ProducerComposite" ...>

    <component name="TestProducer">
        <implementation.java class="..."/>
        <producer name="channel" target="TestChannel"/>
    </component>

</composite>

<composite name="ChannelComposite"...>

    <channel name="TestChannel">
        <f3:binding.zeromq/>
    </channel>

</composite>

<composite name="ConsumerComposite" ...>

    <component name="TestConsumer">
        <implementation.java class="..."/>
        <consumer name="channel" source="TestChannel"/>
    </component>

</composite>

Connecting to External Event Streams