Red Hat Training

A Red Hat training course is available for Red Hat Fuse

1.5. Asynchronous Communication

Overview

Red Hat JBoss Fuse supports two alternative mechanisms of asynchronous communication within the container: the JMS broker and the NMR bus.

JMS broker

You can optionally install a broker instance, typically Apache ActiveMQ, into the Red Hat JBoss Fuse container, to provide support for asynchronous communication between bundles in the container. Apache ActiveMQ is a sophisticated implementation of a JMS broker, which supports asynchronous communication using either queues or topics (publish-subscribe model). Some of the basic features of this JMS broker are as follows:
  • VM protocol—the Virtual Machine (VM) transport protocol is ideal for communicating within the container. VM is optimized for sending messages within the same JVM instance.
  • Persistent or non-persistent messaging—you can choose whether the broker should persist messages or not, depending on the requirements of your application.
  • Ease of use—there is no need to create and configure destinations (that is, queues or topics) before you can use them. After connecting to a broker, you can immediately start sending and receiving messages. If you start sending messages to a queue that does not exist yet, Apache ActiveMQ creates it dynamically.
  • External communication—you can also configure a TCP port on the broker, opening it up to external JMS clients or other brokers.
For details of how to set up a JMS broker in Red Hat JBoss Fuse, see Chapter 17, JMS Broker.

NMR bus

The Normalized Message Router (NMR) bus is an asynchronous messaging system that was originally developed in the context of the JBI standard. In the original specification of the NMR, the message was required to be in XML format and the destination addresses were required to conform to specific URI formats.
The NMR in Red Hat JBoss Fuse, however, has been modified from the original JBI specification. Although you can still use the NMR in the standard way in the context of the JBI container, there are some important differences when you use the NMR in the context of the OSGi container. In the context of OSGi, the NMR bus is much less restrictive, in particular:
  • A message body is not required to be in XML format. You can use any data format in the NMR message body.
  • A destination address can be an arbitrary string.
  • Messages can be sent within the OSGi container; within the JBI container; and between the OSGi container and the JBI container. Therefore, the NMR bus integrates the two containers.