This topic describes the features supported by Message Queue for Apache RocketMQ.
Message Queue for Apache RocketMQ provides a high availability message queuing service in multiple Alibaba Cloud regions. Multiple data centers are deployed in a single region to ensure high availability of services. If one data center is unavailable, applications can publish and subscribe to messages.
- TCP: The TCP-based SDK access mode is more specialized, reliable, and stable than the HTTP-based access mode. Message Queue for Apache RocketMQ supports clients that use the following programming languages: Java, C, C++, and .NET.
- HTTP: The RESTful style is used for HTTP. Message Queue for Apache RocketMQ supports HTTP-based access mode. This mode is easy to use and provides powerful capabilities for cross-network access. Message Queue for Apache RocektMQ supports clients that use the following programming languages: Java, C++, .NET, Go, Python, Node.js, and PHP.
- Web console: supports topic management, group management, message queries, message trace queries, and monitoring and alerting. For more information, see Console Guide.
- OpenAPI: allows you to integrate Message Queue for Apache RocketMQ management tools into your console. For more information about the Message Queue for Apache RocketMQ API, see Release notes.
Normal messages are messages that have no special features in Message Queue for Apache RocketMQ. They are different from featured messages, such as scheduled messages, delayed messages, ordered messages, and transactional 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.
Message Queue for Apache RocketMQ allows consumers to consume ordered messages in a first-in-first-out (FIFO) order. The earliest published message is consumed first. Ordered messages are divided into partitionally ordered messages and globally ordered messages.
|Message type||Support for reliable synchronous transmission||Support for reliable asynchronous transmission||Support for one-way transmission||Support for multi-thread transmission||Performance|
|Scheduled messages and delayed messages|
|Partitionally ordered message||Yes||No||No||No||High|
|Globally ordered messages||Medium|
- 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 at least once. Consumers may receive the same message multiple times because Message Queue for Apache RocketMQ is developed based on a distributed architecture and uses a dynamic network. If a consumer restarts their applications, the consumers may receive the same message multiple times. Applications must process the same message multiple times without causing errors or inconsistencies in data. For more information about the best practices for consumption idempotence, see Consumption idempotence.
- Message filtering: Message Queue for Apache RocketMQ allows you to configure message attributes to classify the messages that producers send to topics on the Message Queue for Apache RocketMQ broker. You can configure filter conditions in consumers so that the consumers can subscribe to messages that have the specified attributes in the topics. Then, the broker filters the messages sent by the producers and delivers only the messages that meet the specified conditions to the consumers.
- Query a message: Message Queue for Apache RocketMQ allows you to query messages by message ID, message key, and topic.
- Query a message trace: A message trace records the routing information about a message that is sent from a producer to a Message Queue for Apache RocketMQ broker, and then to a consumer. This way, you can troubleshoot issues that occur.
- Clustering consumption and broadcasting consumption: In clustering consumption mode, a message is processed only by 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. This way, 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 previous point for a consumer in time. The consumption starts from the offset that you specify.
- Dead-letter queues: Messages that cannot be consumed are stored in a dead-letter queue for subsequent processing.
- Dashboard: provides rich, comprehensive, and multi-dimensional statistical metrics. You can view metrics such as message production metrics, message consumption metrics, and message accumulation metrics from the instance, topic, and group dimensions.
- 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 to which a group subscribes and receive alert messages. This way, you can monitor the message consumption status in real time and resolve errors in a timely manner.
- Migrate open source RocketMQ clusters to the cloud: You can migrate the metadata file that is exported from the open source RocketMQ to a Message Queue for Apache RocketMQ instance. This way, you can seamlessly migrate your messaging service to Alibaba Cloud.