<span style="background-color: rgb(255, 255, 255);">I'm running RabbitMQ with the node.js amqp-node client. I've set up a simple publish/consume test in two different ways each produces a different latency and I can't work out why. The latency was measured from the time the message was sent to the time it was delivered.</span><div><span style="background-color: rgb(255, 255, 255);"><br></span></div>The first method uses two separate processes - one for the publishing app - one for the consuming app. It produces a latency of about at 4ms. The second method uses just one app to produce and consume. This produces a latency of about 40ms. Can anyone explain to me why? Thank you for your time.<div><br><div><b style="background-color: rgb(255, 255, 255);">Method #1 Producer:</b></div><div><span style="background-color: rgb(255, 255, 255);"><br></span></div><div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; "><span style="background-color: rgb(255, 255, 255);"><font face="courier new, monospace">&nbsp; &nbsp; var amqp = require('amqp'),<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>connection = amqp.createConnection({host:'localhost'}),<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>testExchange = {};</font><font face="courier new, monospace"><br></font><font face="courier new, monospace">connection.on('ready', function(){<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>testExchange = connection.exchange('testExchange', {type:'topic', autoDelete:true});<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>testMessage();<br></font><font face="courier new, monospace">});</font></span></blockquote><div>&nbsp;</div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; "><span style="background-color: rgb(255, 255, 255);"><font face="courier new, monospace"><br></font><font face="courier new, monospace">function testMessage(){<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>console.log('message sent');<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>testExchange.publish('test.message', { msg:'testMessage', time: new Date().getTime() });<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>setTimeout(testMessage, 500);<br></font><font face="courier new, monospace">}</font></span></blockquote><div>&nbsp;</div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; "></blockquote><div>&nbsp;</div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; "><blockquote><span style="background-color: rgb(255, 255, 255);"><font face="courier new, monospace"></font></span></blockquote></blockquote><div><span style="background-color: rgb(255, 255, 255);"><b>&nbsp;Method #1 Consumer</b></span></div></div><div><span style="background-color: rgb(255, 255, 255);"><b><br></b></span></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><span style="background-color: rgb(255, 255, 255);"><font face="courier new, monospace"><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">var amqp = require('amqp'),<br><span class="Apple-tab-span" style="white-space:pre">        </span>connection = amqp.createConnection({host:'localhost'}),<br>connection.on('ready', function(){<br><span class="Apple-tab-span" style="white-space:pre">        </span>var testExchange = connection.exchange('testExchange', {type:'topic', autoDelete:true});<br><span class="Apple-tab-span" style="white-space:pre">        </span>var testQ = connection.queue('testQ', function(queue){<br><span class="Apple-tab-span" style="white-space:pre">                </span>queue.bind('testExchange', 'test.#');<br><span class="Apple-tab-span" style="white-space:pre">                </span>queue.subscribe( function(message){<br><span class="Apple-tab-span" style="white-space:pre">                        </span>console.log('message received');<br><span class="Apple-tab-span" style="white-space:pre">                        </span>var now = new Date().getTime();<br><span class="Apple-tab-span" style="white-space:pre">                        </span>console.log(now-message.time);<br><span class="Apple-tab-span" style="white-space:pre">                </span>});<br><span class="Apple-tab-span" style="white-space:pre">        </span>});<br>});</blockquote></font></span></div></blockquote><div><br></div><div><b>Method #2 Producer&nbsp;and Consumer&nbsp;</b></div><div><br></div><blockquote style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; " class="gmail_quote"><div><blockquote><font face="courier new, monospace">var amqp = require('amqp'),<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>connection = amqp.createConnection({host:'localhost'}),<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>testExchange = {};</font><font face="courier new, monospace"><br></font><font face="courier new, monospace">connection.on('ready', function(){<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>testExchange = connection.exchange('testExchange', {type:'topic', autoDelete:true});<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>var testQ = connection.queue('testQ', function(queue){<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">                </span>queue.bind('testExchange', 'test.#');<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">                </span>queue.subscribe( function(message){<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">                        </span>console.log('message received');<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">                        </span>var now = new Date().getTime();<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">                        </span>console.log(now-message.time);<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">                </span>});<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">                </span>testMessage();<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>});<br></font><font face="courier new, monospace">});</font><font face="courier new, monospace"><br></font><font face="courier new, monospace">function testMessage(){<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>console.log('message sent');<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>testExchange.publish('test.message', { msg:'testMessage', time: new Date().getTime() });<br></font><font face="courier new, monospace"><span class="Apple-tab-span" style="white-space:pre">        </span>setTimeout(testMessage, 500);<br></font><font face="courier new, monospace">}</font></blockquote></div></blockquote></div>