Liberty messaging is an embedded messaging feature in the Liberty profile. It is a composable, flexible, and dynamic JMS messaging engine that runs within the Liberty profile. Liberty messaging is JMS 1.1 compliant and supports both the point-to-point and publish/subscribe messaging models.
Liberty messaging runs only in the Liberty run time, and you can use the Liberty feature manager to enable or disable the messaging features as required. Because the messaging run time is highly composable, you can enable the basic messaging features for the run time, and dynamically enable more messaging features, such as security, transactions, and remote communication, based on your requirement.
The messaging engine runs as a singleton instance in a Liberty profile, which means that at any specific time, there can be only one messaging engine that is running in a Liberty kernel.
The messaging run time and the other messaging subcomponents are run as OSGi bundles in an OSGi framework. This enables the Liberty kernel to load or unload the messaging bundles based on the usage. For example, if the user does not use the messaging security, then the bundles that are related to the messaging security are not initialized.
Liberty messaging supports both in-process and network TCP/IP connectivity for applications. When the JMS application is deployed in the same JVM where the messaging engine is running, the application can communicate with the in-process messaging engine, without going over the TCP/IP layer. This provides significant performance benefits for the applications to send and receive messages.
JMS applications that are running on the Liberty profile that is not hosting the messaging engine must connect over TCP/IP in order to communicate with the messaging engine.