Red Hat MRG

MRG Messaging FAQ

What is MRG Messaging?

MRG Messaging is an open source, high performance, reliable messaging distribution that implements the AMQP specification. It provides reliable messaging (pub-sub, event, and large message transfer), supporting reliability, clustering, and durable messaging. It is based on the Qpid project, currently in incubation at Apache.

What is AMQP?

AMQP stands for Advanced Message Queuing Protocol and is a specification for how commodity messaging and middleware works. Its primary aim is to create an open standard for messaging in order to create open and interoperable messaging. AMQP defines both a wire-level protocol for messaging (the transport layer) and the higher-level semantics for messaging (the functional layer). It is completely free to use and is being developed by the AMQP Working Group. AMQP is currently will be submitted to a standards body at some point by the AMQP Working Group. For more information, see http://amqp.org.

Why are there two messaging brokers in MRG Messaging: a Java broker and a C++ broker?

MRG Messaging is committed to offering messaging on multiple platforms. The Java broker enables MRG Messaging to run on a variety of systems, including Windows, Unix, and Linux through Java's cross-platform support. The C++ broker is 100% compatible with the Java broker and primarily runs on Linux. It is necessary to take advantage of optimizations that Red Hat is building into Linux, like real time Linux, asynchronous IO, and DMA.

What are some of the specific optimizations MRG Messaging will have for Linux? Isn't this crippling MRG Messaging on other platforms?

MRG Messaging aims to be the leading messaging distribution on ALL platforms - not just Linux. MRG Messaging's Java broker delivers the highest performance and reliability across multiple platforms. However, as Linux is adding many features and optimizations that increase messaging performance, and as Linux is itself open source, ensuring that MRG Messaging takes advantage of these features makes sense. These features and optimizations include:

  • Leveraging the realtime work in the Linux kernel to deliver predictable messaging performance.
  • DMA OFED Network support for native Infiniband support.
  • RDMA support for journal, provided high performance durable messaging.

MRG Messaging is not crippled in any way on non-Linux platforms - there is nothing in the code that degrades performance on other platforms. However, other platforms might not be able to take advantage of synergistic optimizations with MRG Messaging due to their being proprietary or not providing the required features.

What languages does MRG Messaging support? Does it support JMS?

Red Hat messaging aims to be language neutral. Currently, it has clients for Java, C++, Python, C#, and Ruby. Perl support is coming soon as well. The Java client supports a JMS interface. The Python & Ruby clients are particularly interesting because they are extremely small and make available full messaging services to a light-weight scripting environment.

MRG Messaging is highly optimized to run on top of the included MRG Realtime kernel for deterministic, low-latency messaging. Additionally, Red Hat is leveraging messaging to add a standardized messaging API to MRG Grid to schedule from any platform and language onto a grid that spans from local and idle workstations to remote clouds. Furthermore, MRG's grid capabilities will be able to leverage MRG's large messaging capabilities to transport entire virtual machines efficiently so that machines can execute any task regardless of their host environments.