pages tagged queuesyakkinghttp://yakking.branchable.com/tags/queues/yakkingikiwiki2015-08-12T11:00:13ZMessage Queueshttp://yakking.branchable.com/posts/message-queues/Daniel Silverstone2015-08-12T11:00:13Z2015-08-12T11:00:07Z
<p><a href="https://en.wikipedia.org/wiki/Message_queue">Message queues</a>, at their heart, are ways to get little packets of
information (messages) from one place to another in some sort of order. Queues
are often used to communicate between processes (and in some cases between
systems). They vary from the simplest <a href="http://linux.die.net/man/7/mq_overview">POSIX message Queues</a> to the much more
powerful <a href="https://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol">AMQP</a> implementations such as <a href="https://www.rabbitmq.com/">RabbitMQ</a>, <a href="https://activemq.apache.org/apollo/">Apache Apollo</a>, or
<a href="http://azure.microsoft.com/en-gb/services/service-bus/">Windows Azure Service Bus</a>. There is also the no-broker needed <a href="https://en.wikipedia.org/wiki/%C3%98MQ">ØMQ</a>, or
its lightweight counterpart <a href="http://nanomsg.org/">nanomsg</a>, for those who like the AMQP behaviour
but want something which doesn't need a broker.</p>
<p>The varying levels of complexity of message bus extend from simply passing
messages in the order they were added from sender to receiver (like a socket
might), through priority ordering, to the more complex <a href="https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern">PUBSUB</a>, <a href="https://en.wikipedia.org/wiki/Request%E2%80%93response">REQREP</a>,
or <a href="http://nanomsg.org/v0.5/nn_pipeline.7.html">PIPELINE</a> patterns. The pattern which works best for your workload will
be workload dependent, and the appropriate complexity of solution will depend
on your expected scalability needs and deployment methodology. Whatever your
problem, and whatever the implementation language you've chosen, there are
plenty of bindings out there to such a wide variety of message queue
implementations that before you think about writing your own job queue, why not
take a look at one of those which already exist.</p>