Need advice about which tool to choose?Ask the StackShare community!
Amazon MQ vs Amazon SNS: What are the differences?
Introduction
In this Markdown code, we will discuss the key differences between Amazon MQ and Amazon SNS. Both are messaging services provided by Amazon Web Services (AWS), but they have distinct features and functionalities that set them apart.
Message Types: Amazon MQ is a managed message broker service that supports multiple messaging protocols like AMQP, MQTT, STOMP, and OpenWire. It enables you to use both queue-based and topic-based message queues for point-to-point and publish-subscribe communication patterns. On the other hand, Amazon SNS is a fully-managed pub/sub messaging service that supports only simple messaging over various transport protocols like HTTP, HTTPS, email, SMS, and mobile push notifications. It facilitates the dissemination of messages to multiple recipients simultaneously.
Message Persistence: Amazon MQ provides durable message storage, meaning it can store messages when the recipient or subscriber is not available to receive them. It ensures the durability of messages even in the event of a broker failure. In contrast, Amazon SNS doesn't store messages persistently. It follows the "fire and forget" model, where messages are not stored and are only delivered to active subscribers at the time of publishing.
Message Ordering: Amazon MQ guarantees the ordering of messages within a single queue, maintaining the FIFO (First-In-First-Out) order. It ensures that the oldest message is consumed first before moving on to the next one. On the other hand, Amazon SNS doesn't guarantee message ordering. Messages published to SNS topics can be delivered to subscribers in any order, and they are not necessarily processed in the same sequence they were sent.
Message Filtering: Amazon MQ supports message filtering at the broker level, allowing subscribers to receive only specific messages based on defined criteria. It provides flexible filtering options using message selectors and header attributes. In contrast, Amazon SNS doesn't offer built-in message filtering capabilities. Subscribers of an SNS topic receive all the messages published to the topic, without the ability to filter based on message content.
Scaling: Amazon MQ enables automatic scaling of broker instances to handle increased message traffic. It automatically adjusts resources based on the workload to ensure optimal performance. On the other hand, Amazon SNS doesn't require scaling since it can handle high message volumes and traffic by design. It automatically provisions resources as needed to deliver messages.
Message Processing: Amazon MQ supports advanced features like message redelivery, dead-letter queues, and message acknowledgement, ensuring reliable message processing and handling. It provides mechanisms to handle failed message deliveries and handle messages that couldn't be processed successfully. In contrast, Amazon SNS doesn't offer these advanced message processing features. It focuses more on the publish-subscribe pattern without extensive handling of message errors or retries.
In Summary, Amazon MQ is a managed message broker service that supports multiple protocols, offers message persistence, ordering, filtering, scaling, and advanced message processing. On the other hand, Amazon SNS is a fully-managed pub/sub messaging service that supports simple messaging over various transport protocols and provides high scalability for message delivery but lacks some of the advanced features of Amazon MQ.
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 MQ
- Supports low IQ developers7
- Supports existing protocols (JMS, NMS, AMQP, STOMP, …)3
- Easy to migrate existing messaging service2
Pros of Amazon SNS
- Low cost12
- Supports multi subscribers6
Sign up to add or upvote prosMake informed product decisions
Cons of Amazon MQ
- Slow AF4