Advantages:
In terms of performance kafka can be said to be the industry's very good a middleware, in the regular machine configuration, a machine can reach hundreds of thousands of QPS per second. and Kafka performance is also very high, basically sent to the kafka message are millimeters, availability is also especially high. high, kafka is to support cluster deployment, and some of these machines are down, or can run.
Disadvantage:
kafka may lose data, because after kafka receives a message, it writes a disk buffer, and does not directly land on the physical disk, so after the machine fails, it may lead to the loss of data in the disk buffer. Another drawback is that kafka's functionality is relatively single, mainly to support sending messages to it, and then consume the messages from it, and there are no additional advanced features, so based on kafka's limited functionality, it may not be applicable to a lot of scenarios.
In summary: general companies will use kafka to collect some logs and other messages, because the logs are generally very large, even if you lose a few pieces of data is fine, and the throughput is also high, generally is to send and receive messages, do not need too much functionality, so kafka is very suitable for this scenario.
Advantage:
Before RocketMQ did not appear, many companies have switched from ActiveMQ to RabbitMQ, which has the advantage of ensuring that the data is not lost, but also ensure high availability, even if the cluster deployment of some of the machine downtime can be run, and then support for some of the advanced features. For example, dead letter queues, message retries, and so on.
Disadvantages:
RabbitMQ's throughput is relatively low, usually a few tens of thousands of levels, if you encounter a particularly high level of concurrency, it is a bit difficult to support. The first is that it's not easy to get the best out of the system, but it's a lot easier to get the best out of the system. There is also the development language used is erlang, the domestic use of this language is very little, so its in-depth study is also more trouble.
Benefits:
RocketMQ solves the shortcomings of both Kafka and RabbitMQ. Its throughput is also very high, a single machine can reach more than 100,000 QPS, and can guarantee high availability, and can be configured to achieve the data guarantee will not be lost, you can deploy large-scale clusters, but also supports a variety of advanced features, such as delayed messages, transactional messages, message backtracking, dead letter queues, message backlogs and so on. And RocketMQ is the use of java development , in line with the domestic technology stack of most companies , it is easy to read the source code and modify its content .
Disadvantages:
The official documentation for RocketMQ is relatively simple compared to kafka and RabbitMQ, and is not as detailed as the documentation for kafka and RabbitMQ.