[rabbitmq-discuss] Measuring end-to-end message delivery time

Eric Mill konklone at gmail.com
Sat Dec 29 00:25:56 GMT 2012


What I'd do is snapshot the time, down to the millisecond, on both servers, 
both before and after the message goes through the pipeline (to verify that 
they didn't drift apart or closer during the message sending event). Then 
timestamp the message and use the time delta between the two servers to 
adjust the message sent and receive timestamps to figure out the true time 
it took to send the message.

-- Eric

On Saturday, December 22, 2012 11:01:34 PM UTC-5, dbu... at peopleanswers.com 
wrote:
>
> Firstly, kudos to the RabbitMQ team for an astonishingly good product. We 
> are using it as the messaging bus backbone for our flagship application and 
> have had literally zero problems with it. Can't say enough good things.
>
> I'm hoping someone can help me figure out a solution for this. When we 
> send a message, it generally goes through a pipeline something like this:
>
> 1. (Sending JVM) A Java thread will push the message into a 
> ThreadPoolExecutor queue.
> 2. (Sending JVM) The ThreadPoolExecutor sends the message to RabbitMQ.
> 3. RabbitMQ delivers the message to the consumer.
> 4. (Receiving JVM) The consumer receives the message and pushes it into a 
> ThreadPoolExecutor queue
> 5. (Receiving JVM) The ThreadPoolExecutor handles the message
>
> My goal is to measure the total time spent, per message, with millisecond 
> accuracy, from one end of this pipeline to the other. I want to be able to 
> calculate this for every message sent through our message bus, so then I 
> can do analysis on those times, in real-time, and draw useful conclusions.
>
> The trouble is that the part pre-RabbitMQ (1-2) could be in a different 
> JVM on a different physical server than the part post-RabbitMQ (4-5). So I 
> can measure the time for steps 1, 2, 4, and 5. But how do I measure the 
> time it took for the message to actually travel through RabbitMQ (step 3)?
>
> I can't just time-stamp the message because the local time on the two 
> physical servers cannot be guaranteed to be synchronized to the 
> millisecond. We use NTP but it does not keep the two servers that closely 
> synchronized.
>
> So my question is: does RabbitMQ offer anything I can use that will allow 
> me to figure out how long step 4 took for each message I send through 
> RabbitMQ, or at least approximate it closely? Or is there some other clever 
> technoloogy I could use to accomplish the same thing?
>
> Thanks in advance,
> Darrell Burgan
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20121228/da1ee576/attachment.htm>


More information about the rabbitmq-discuss mailing list