The ZeroMQ binding can be combined with Ring Buffer Channels and the LMAX Disruptor to create low-latency processing engines. Consider the following topology where a consumer receives events from one channel, processes them and subsequently invokes another service that in turn publishes output to a second channel:
The above topology is configured to use ring buffer channels as follows:
<composite ...> <channel name="IncomingChannel" type="ring.buffer"> <f3:binding.zeromq addresses="192.0.2:2024"/> </channel> <channel name="OutgoingChannel" type="ring.buffer"> <f3:binding.zeromq addresses="190.0.1:2024"/> </channel> <component name="Component1"> <implementation.java class="..."/> <consumer name="channel" source="IncomingChannel"/> </component> <component name="Component1"> <implementation.java class="..."/> <producer name="channel" target="OutgoingChannel"/> </component> </composite>
In this model, messages are read from a ZeroMQ socket on a thread and placed in a ring buffer slot
0 Comments