This topic describes the features that are supported by Message Queue for Apache RocketMQ.
Message Queue for Apache RocketMQ provides a high availability message queuing service in multiple regions of Alibaba Cloud. Multiple data centers are deployed in a single region to enable high availability services. Even if one data center is unavailable, applications can still publish and subscribe to messages.
- TCP: Compared with the HTTP-based access mode, the TCP-based SDK access mode is more specialized, reliable, and stable. Message Queue for Apache RocektMQ supports clients in the following four programming languages: Java, C, C++, and .NET.
- HTTP: HTTP requests and responses are organized in the REST architectural style. Message Queue for Apache RocketMQ supports HTTP. Message Queue for Apache RocketMQ is easy to use and provides powerful capabilities for cross-network access. Message Queue for Apache RocektMQ supports clients in the following seven programming languages: Java, C++, .NET, Go, Python, Node.js, and PHP.
- Web console: supports topic management, group management, message queries, message trace display and queries, resource reports, and monitoring and alert management.
- API: allows you to integrate Message Queue for Apache RocketMQ management tools into your own console. For more information about the Message Queue for Apache RocketMQ API, see Release notes.
- Normal messages: Normal messages do not have features in Message Queue for Apache RocketMQ. The following types of messages have features: scheduled messages and delayed messages, ordered messages, and transactional messages.
- Transactional messages: Message Queue for Apache RocketMQ provides a distributed transaction feature that is similar to X/Open XA. This ensures transaction consistency.
- Scheduled messages and delayed messages: Message Queue for Apache RocketMQ allows producers to specify the length of time to wait before a scheduled or delayed message is published. The maximum length of time is 40 days.
- Ordered messages: Message Queue for Apache RocketMQ allows consumers to consume messages in the order in which messages are published.
- Message retry: After a consumer returns the response of a message retry, Message Queue for Apache RocketMQ redelivers the message based on the specified retry rule. For more information, see Message retry.
- At-least-once delivery: Message Queue for Apache RocketMQ ensures that each message is consumed once. Due to the distributed architecture and constantly changing network of Message Queue for Apache RocketMQ or restarting of applications, consumers may repeatedly receive the same message. Applications must be able to process the same message multiple times without causing errors or inconsistencies. For more information about the best practices for consumption idempotence, see Consumption idempotence.
- Query messages: Message Queue for Apache RocketMQ allows you to query messages based on the message ID, message key, or topic.
- Query a message trace: A message trace records the routing information of a message from delivery by a producer, to a Message Queue for Apache RocketMQ broker, and then to a consumer. This facilitates troubleshooting.
- Clustering consumption and broadcasting consumption: In clustering consumption mode, a message needs to be processed by only a random consumer in a group in Message Queue for Apache RocketMQ. In broadcasting consumption mode, Message Queue for Apache RocketMQ publishes each message to all consumers registered in a group to ensure that the message is consumed by each consumer at least once.
- Reset consumer offsets: You can change the offset to the latest message to skip the accumulated messages for a consumer. You can also change the offset to the corresponding offset of a specified point in time that is earlier than the current time for a consumer. The consumption starts from the offset you specify.
- Dead-letter queues: Messages that cannot be consumed are stored in a dead-letter queue for subsequent processing.
- Resource reports: This feature allows you to collect statistics on produced messages and consumed messages. This feature allows you to view the total number of messages that a topic receives or the transactions per second (TPS) for message production in a specified period of time. The feature also allows you to view the total number of messages that a topic publishes to a group ID or the TPS for message consumption in a specified period of time.
- Monitoring and alerting: You can use the monitoring and alerting feature of Message Queue for Apache RocketMQ to monitor the message consumption status of a topic that is subscribed to by a group and receive alert messages. This helps you monitor the message consumption status in real time and handle consumption exceptions at the earliest opportunity.