Need advice about which tool to choose?Ask the StackShare community!
Amazon SQS vs IBM MQ: What are the differences?
Introduction
In this markdown, we will discuss the key differences between Amazon Simple Queue Service (Amazon SQS) and IBM MQ. Both Amazon SQS and IBM MQ are messaging systems that enable applications to communicate and send messages asynchronously. However, there are several key differences between the two solutions.
Deployment Model: Amazon SQS is a fully managed service and is delivered as a cloud-based solution. It handles all aspects of infrastructure management, including scaling, monitoring, and maintenance. On the other hand, IBM MQ is a traditional on-premises messaging system that requires installation and configuration on the customer's infrastructure.
Messaging Protocols: Amazon SQS primarily supports the HTTP/HTTPS protocol for sending and receiving messages. It also provides an integration with the Amazon Simple Notification Service (SNS), enabling push-based message delivery. In contrast, IBM MQ supports multiple messaging protocols such as TCP/IP, HTTP, and WebSphere MQ. These protocol options provide flexibility in integrating with various types of applications and environments.
Message Persistence: In Amazon SQS, messages are stored redundantly across multiple availability zones to ensure durability. However, Amazon SQS is eventually consistent, meaning there might be a slight delay in receiving messages. IBM MQ, on the other hand, ensures message persistence through message logging and transactional support, making it suitable for applications that require strict delivery guarantees.
Message Ordering: Amazon SQS guarantees at-least-once delivery of messages but does not inherently provide strict ordering of messages. It supports message grouping, where related messages can be grouped together, but the order within the group is not preserved. IBM MQ, however, provides built-in support for ordered message delivery, ensuring that messages are processed in the order they were sent.
Message Size Limit: Amazon SQS has a maximum message size limit of 256KB for standard queues and 2GB for FIFO queues. It allows larger messages to be stored in Amazon Simple Storage Service (S3) and references them in the message. On the other hand, IBM MQ has a configurable maximum message size, allowing larger messages to be handled within the messaging system itself.
Scalability and Elasticity: Amazon SQS is built for high scalability and elasticity, automatically handling the scaling of resources based on the workload. It can handle a large number of concurrent requests and offers virtually unlimited message queues. In contrast, IBM MQ requires manual scaling and configuration of resources to handle increased workloads, making it less suitable for rapid scaling and dynamic environments.
In summary, Amazon SQS is a cloud-based, fully managed messaging service that provides ease of use, scalability, and integration with other AWS services. IBM MQ, on the other hand, is a traditional on-premises messaging system with support for multiple protocols, strict message ordering, and granular control over message persistence. The choice between the two solutions depends on factors such as deployment preferences, messaging requirements, and scalability needs.
I want to schedule a message. Amazon SQS provides a delay of 15 minutes, but I want it in some hours.
Example: Let's say a Message1 is consumed by a consumer A but somehow it failed inside the consumer. I would want to put it in a queue and retry after 4hrs. Can I do this in Amazon MQ? I have seen in some Amazon MQ videos saying scheduling messages can be done. But, I'm not sure how.
Mithiridi, I believe you are talking about two different things. 1. If you need to process messages with delays of more 15m or at specific times, it's not a good idea to use queues, independently of tool SQM, Rabbit or Amazon MQ. you should considerer another approach using a scheduled job. 2. For dead queues and policy retries RabbitMQ, for example, doesn't support your use case. https://medium.com/@kiennguyen88/rabbitmq-delay-retry-schedule-with-dead-letter-exchange-31fb25a440fc I'm not sure if that is possible SNS/SQS support, they have a maximum delay for delivery (maxDelayTarget) in seconds but it's not clear the number. You can check this out: https://docs.aws.amazon.com/sns/latest/dg/sns-message-delivery-retries.html
Pros of Amazon SQS
- Easy to use, reliable62
- Low cost40
- Simple28
- Doesn't need to maintain it14
- It is Serverless8
- Has a max message size (currently 256K)4
- Triggers Lambda3
- Easy to configure with Terraform3
- Delayed delivery upto 15 mins only3
- Delayed delivery upto 12 hours3
- JMS compliant1
- Support for retry and dead letter queue1
- D1
Pros of IBM MQ
- Reliable for banking transactions3
- Useful for big enteprises3
- Secure2
- Broader connectivity - more protocols, APIs, Files etc1
- Many deployment options (containers, cloud, VM etc)1
- High Availability1
Sign up to add or upvote prosMake informed product decisions
Cons of Amazon SQS
- Has a max message size (currently 256K)2
- Proprietary2
- Difficult to configure2
- Has a maximum 15 minutes of delayed messages only1
Cons of IBM MQ
- Cost2