Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

On my team at work, we use the IBM MQ technology a lot for cross-application communication. I've seen lately on Hacker News and other places about other MQ technologies like RabbitMQ. I have a basic understanding of what it is (a commonly checked area to put and get messages), but what I want to know what exactly is it good at? How will I know where I want to use it and when? Why not just stick with more rudimentary forms of interprocess messaging?

like image 561
daveslab Avatar asked May 19 '10 19:05

daveslab


People also ask

Why do we use MQ?

The main use of IBM MQ is to send or exchange messages. One application puts a message on a queue on one computer, and another application gets the same message from another queue on a different computer.

What is MQ system?

An IBM MQ messaging system is made up of one or more queue managers. Queue managers are where messaging resources, such as queues, are configured and what applications connect to, either running on the same system as the queue manager or over the network.

What are the advantages of IBM MQ?

IBM MQ BenefitsImprove customer interaction with faster, more reliable data processing, exchange, and connectivity. Manage compliance and risk. Help extend your business to the Internet of Things and mobile devices by connecting virtually all systems and devices–from mainframe to mobile.

What does MQ company do?

Marqeta, Inc. operates a cloud-based open application programming interface platform that delivers card issuing and transaction processing services to developers, technical product managers, and visionary entrepreneurs.


2 Answers

All the explanations so far are accurate and to the point - but might be missing something: one of the main benefits of message queueing: resilience.

Imagine this: you need to communicate with two or three other systems. A common approach these days will be web services which is fine if you need an answers right away.

However: web services can be down and not available - what do you do then? Putting your message into a message queue (which has a component on your machine/server, too) typically will work in this scenario - your message just doesn't get delivered and thus processed right now - but it will later on, when the other side of the service comes back online.

So in many cases, using message queues to connect disparate systems is a more reliable, more robust way of sending messages back and forth. It doesn't work well for everything (if you want to know the current stock price for MSFT, putting that request into a queue might not be the best of ideas) - but in lots of cases, like putting an order into your supplier's message queue, it works really well and can help ease some of the reliability issues with other technologies.

like image 137
marc_s Avatar answered Oct 16 '22 08:10

marc_s


MQ stands for messaging queue.

It's an abstraction layer that allows multiple processes (likely on different machines) to communicate via various models (e.g., point-to-point, publish subscribe, etc.). Depending on the implementation, it can be configured for things like guaranteed reliability, error reporting, security, discovery, performance, etc.

You can do all this manually with sockets, but it's very difficult.

For example: Suppose you want to processes to communicate, but one of them can die in the middle and later get reconnected. How would you ensure that interim messages were not lost? MQ solutions can do that for you.

like image 26
Uri Avatar answered Oct 16 '22 08:10

Uri