This topic describes the features supported by Message Queue for Apache RocketMQ.

Overview

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.

Message Queue for Apache RocketMQ supports TCP-based and HTTP-based access. This way, applications that are developed based on different programming languages can access Message Queue for Apache RocketMQ. You can deploy applications on Alibaba Cloud ECS instances or outside Alibaba Cloud. You can also embed applications into mobile terminals or IoT devices. Then, you can connect the applications that you deployed or embedded to Message Queue for Apache RocketMQ. This way, you can use these applications to publish and subscribe to messages. You can also access Message Queue for Apache RocketMQ over the Internet to receive and send messages. Features

Multi-protocol access

  • 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.

Management tools

  • 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.

Message types

Normal messages

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.

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 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.

Transactional messages

Message Queue for Apache RocketMQ provides a distributed transaction feature that is similar to X/Open XA, ensuring transaction consistency.

Table 1. Message types
Message type Support for reliable synchronous transmission Support for reliable asynchronous transmission Support for one-way transmission Support for multi-thread transmission Performance
Normal messages Yes Yes Yes Yes Highest
Transactional messages
Scheduled messages and delayed messages
Partitionally ordered message Yes No No No High
Globally ordered messages Medium

Message features

  • 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.

Features

  • 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.