QPS: CMQ features higher QPS. When high reliability is ensured and the same physical device is used, the throughput of CMQ is four times higher than that of RabbitMQ, with a single CMQ cluster providing over 100,000 QPS.
Message rewind: RabbitMQ does not support message rewind, while CMQ allows you to rewind messages by time; for example, messages can be consumed again from a specified time point on the day before. In a typical scenario where a consumer needs to analyze orders, if the messages consumed today have all become invalid due to problems such as program logic errors or dependent system faults, then the messages need to be consumed again from 00:00 yesterday on, and message rewind will be much helpful in this case.
Consistency algorithm: CMQ and RabbitMQ both support hot backup with multiple servers to improve availability. CMQ implements this feature based on the Raft algorithm which is simpler and easier to be maintained. RabbitMQ uses its proprietary Guaranteed Multicast (GM) algorithm which is difficult to learn.
OPS difficulty: OPS in RabbitMQ is more difficult, as it is developed in Erlang, a less popular programming language that has higher learning costs.
Data loss: in extreme cases, data may be lost in RocketMQ. Because RocketMQ allows ACK to be returned to the client before data flushing, messages will be lost when the server is down due to exceptions.
Multiple masters and slaves: multiple masters and slaves need to be set up for RocketMQ to ensure high business availability. RocketMQ can ensure availability and reliability only when there are healthy nodes in ISR; otherwise, the availability and reliability cannot be guaranteed, and the overheads will be high.
Therefore, compared with traditional open-source message queue applications, Tencent Cloud CMQ has the following advantages:
|Tencent Cloud CMQ||Open-Source Messaging Middleware|
|High performance||High performance and reliability can be guaranteed at the same time, and the QPS of a single CMQ instance reaches 5,000||High performance and reliability cannot be guaranteed at the same time|