title: “The RoadMap of Apache RocketMQ” permalink: /docs/roadmap/ modified: 2017-3-7T15:01:43-04:00

4.1.0~4.3.0-incubating RoadMap:

OpenMessaging

OpenMessaging, which includes the establishment of industry guidelines and messaging, streaming specifications to provide a common framework for finance, e-commerce, IoT and big-data area. The design principles are the cloud-orientedness, simplicity, flexibility, and language independency in distributed heterogeneous environments. Conformance to these specifications allows the development of a heterogeneous messaging applications across all major platforms and operating systems. JIRA

{% include toc %}

Message Filtering

So far, RocketMQ only supports message filtering feature by TAG, but one message can only own one tag, which is too limited to meet complex business requirements.

So, we want to define and implement a reasonable filter language based on a subset of the SQL 92 expression syntax to support customized message filtering. JIRA

Batch Messaging

In order to use RocketMQ in big data related scenarios, batch messaging is necessary and will bring million-level TPS for RocketMQ. JIRA, PR

Consistent Hash Allocate Strategy(CHAS)

Consumer clients use the average allocate strategy by far, which is very sensitive when clients register or unregister continuously.

A Consistent Hash allocate strategy is valuable for developers who care more about stabilization than averaging.

So we decided to support CHAS as an extra choice in consumer load balancing. JIRA, PR

Global Order Messaging

As we know, messages in the same queue can be consumed sequentially. So we always send the congeneric messages to the same queue to guarantee ordering, which will cause hot-point issue.

So it'd be cool if we can support a new global order messaging mechanism without the hot-point problem. JIRA

Distributed Transaction Messaging

Undoubtedly, transaction messaging is frequently used in most business.

But users have to implement transaction mechanism by themselves for now, so there is a potential need of a database implementation to solve the problem.

Now we can support distributed transaction messaging to make it convenient for the users and help them handle complex business. JIRA

Non-Redundant Message Delivery Mechanism

The duplicated messages will impose extra cost if user needs non-repeating messages.

In most cases, user needs to store the consume records to determine if a message is duplicated, and the store stage should guarantee consistency. So we need to support a strict and non-redundant message delivery mechanism. JIRA

Intellective HA Architecture

RocketMQ uses master-slave as HA architecture, which has low latency and high throughput, but this program needs human intervention to recover from abnormal situations.

So, we want to support a multi-replication high availability/reliability mechanism, without human intervention. JIRA

Docker Image

Provide a docker image for easy deployment and management, optimize for the latest version. JIRA

MQTT

MQTT is a machine-to-machine (M2M)/“Internet of Things” connectivity protocol, which has been widely used in IoT. Support MQTT, give RocketMQ the power to connect everything. JIRA

4.4.0+ RoadMap:

  1. Support more application layer protocol: WebSocket, HTTP2, etc.
  2. Support more native language SDK: PHP, Python, .Net, Node, Go, etc. The chosen programming languages are based on the investigation of many cloud platforms.
  3. Support advanced message queuing protocol(AMQP).

RocketMQ Externals

RocketMQ, as a message-oriented middleware, plays a connector role in distributed environment, so in order to embrace the ecological preferably, RocketMQ community needs a series of external projects to integrate with other excellent projects.

  1. rocketmq-console, provide a ops dashboard for RocketMQ. REPO
  2. rocketmq-jms, provide a new client to support JMS 2.0. REPO
  3. rocketmq-flume-ng, integrate RocketMQ with Apache Flume.REPO, FLUME-JIRA
  4. rocketmq-storm, integrate RocketMQ with storm. REPO
  5. rocketmq-ignite, integrate RocketMQ with ignite. JIRA, IGNITE-JIRA
  6. rocketmq-spark, integrate RocketMQ with spark. JIRA
  7. rocketmq-flink, integrate RocketMQ with flink. JIRA
  8. rocketmq-distributedlog integrate RocketMQ with distributedlog. JIRA
  9. rocketmq-spring, provide a adapter for spring and spring-boot. JIRA