What is MQ and why do I want to use it?

In my team at work, we use a lot of IBM MQ technology for communication between applications. Recently, I have seen Hacker News and other places about other MQ technologies such as RabbitMQ . I have a common understanding of what it is (usually a validated area to send and receive messages), but what do I want to know what exactly is good about? How do I know where I want to use it and when? Why not just stick to more rudimentary forms of interprocess messaging?

+25
rabbitmq activemq ibm-mq
May 19 '10 at 19:38
source share
6 answers

All explanations are still accurate and accurate - but there may be something missing: one of the main advantages of the message queue: stability.

Imagine: you need to communicate with two or three other systems. These days, a common approach is web services, which are great if you need answers right away.

However: web services may or may not be available - what are you doing? Putting your message in a message queue (with a component on your computer / server, too) will usually work in this scenario - your message simply will not be delivered and, thus, processed right now, but later it will be when the other side of the service returns in online mode.

Therefore, in many cases, using message queues to connect disparate systems is a more reliable and more reliable way to send messages back and forth. This does not work well for everyone (if you want to know the current stock price for MSFT, including this request in the queue may not be the best idea), but in many cases, for example, entering an order in the message from the queue provider, it works very well and can Help fix some reliability issues with other technologies.

+38
May 19 '10 at 21:09
source share

MQ stands for message queue.

This is an abstraction layer that allows several processes (possibly on different computers) to exchange data using various models (for example, point-to-point, subscription to publication, etc.). Depending on the implementation, it can be configured for things such as guaranteed reliability, error reporting, security, detection, performance, etc.

You can do all this manually using sockets, but it is very difficult.

For example: Suppose you want processes to bind, but one of them may die in the middle and then reconnect. How would you guarantee that intermediate messages are not lost? MQ solutions can do this for you.

+11
May 19 '10 at 19:44
source share

Message Queuing systems should provide you with several bonuses. Among the most important are monitoring and transactional behavior.

Transactional design is important if you want to be immune to failures such as power failure. Imagine that you want to notify the banking system about the withdrawal of money from an ATM, and this must be done exactly once per request, regardless of which servers were temporarily not running in the middle. MQ systems allow you to coordinate transactions across multiple databases, MQ, and other systems.

Needless to say, such systems are very slow compared to named pipes, TCP, or other non-transactional tools. If high performance is required, you do not allow to write your messages through a disk. Instead, it will complicate your design - to achieve an exotic, reliable and fast connection that pushes the designer to truly nontrivial tricks.

MQ systems typically allow users to view the contents of a queue, write plugins, clear a queue, etc.

+6
May 19 '10 at 19:42
source share

MQ simply means a message queue.

You would use this when you need to reliably send an interprocess / cross-platform / cross-application message that is time-independent.

The message queue receives the message, places it in the correct queue, and waits for the application to receive the message, when it is ready.

+2
May 19 '10 at 19:42
source share

Message queues form the basis for many of the templates described in the classic book Corporate Integration Templates and the website .

0
May 19 '10 at 19:59
source share

link: web services may or may not be available - what are you doing then? As a complement to this; What if your local network and your local computer also do not work? While you wait for the system to recover dependent deployed systems elsewhere, expecting that data to see an alternate data stream. Otherwise, this may not be a good enough real-time answer today and very soon in the future requirements of Internet of Things (IOT).

if you need true parallel, non-volatile memory of various FIFO streams (at least at some point along the signal chain), use FPGA and FRAM memory. FRAM operates at a clock frequency, and FPGA devices can be reprogrammed on the fly by adding and removing, however, many independent parallel data streams are necessary (within the established limits, of course).

0
Mar 28 '15 at 2:55
source share



All Articles