RabbitMQ, vFabric’s message delivery bus, is widely used across n-tiered applications that require a reliable and fast queuing system. Message queues are a useful strategy in modern applications, helping to decouple application components so they can work asynchronously, while the message bus directs transactions between application components or external services. A new RabbitMQ client plugin for Spring Insight helps monitor your application’s behavior when communicating with RabbitMQ servers, and can help you analyze latencies and errors within your application that might not become immediately visible as no end-user interaction is made.
The RabbitMQ Plugin for Spring Insight allows for monitoring RabbitMQ Java client libraries at the code-level. Using this plugin you can monitor your application's performance around publishing and receiving messages through RabbitMQ.
Received messages are elected as "EndPoints" within the application. This allows for monitoring application flows that are triggered by a message receive. A full trace is then available for you to understand how the application behaves for every type of message it receives. Here’s how these traces look in Insight’s Dashboard.
The above screen shot was taken from a setup that monitors a local Nanotrader demo application. As always, the Applications section in the UI lists the Nanotrader application endpoints. In fact, these endpoints designate a breakdown by exchange and routing-key of the various queues your application attaches to, providing a clear map of incoming message sources and their corresponding business logic flows.
By clicking on each of the endpoints you can browse the traces to conveniently to figure out how your application behaves. In this example we can see the AMQP message meta-data and how it’s resolved into specific business logic – “save order” in this case. We can also see that a NullPointerException (NPE) was thrown and got logged in the trace by the plugin, coloring the endpoint in red.
For more information on how Spring Insight and the RabbitMQ client plugin can help you monitor asynchronous communications inside your application check out the documentation, or download the plugin.