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
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
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.
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
Provide a docker image for easy deployment and management, optimize for the latest version. JIRA
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
- Support more application layer protocol: WebSocket, HTTP2, etc.
- Support more native language SDK: PHP, Python, .Net, Node, Go, etc. The chosen programming languages are based on the investigation of many cloud platforms.
- Support advanced message queuing protocol(AMQP).
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.
- rocketmq-console, provide a ops dashboard for RocketMQ. REPO
- rocketmq-jms, provide a new client to support JMS 2.0. REPO
- rocketmq-flume-ng, integrate RocketMQ with Apache Flume.REPO, FLUME-JIRA
- rocketmq-storm, integrate RocketMQ with storm. REPO
- rocketmq-ignite, integrate RocketMQ with ignite. JIRA, IGNITE-JIRA
- rocketmq-spark, integrate RocketMQ with spark. JIRA
- rocketmq-flink, integrate RocketMQ with flink. JIRA
- rocketmq-distributedlog integrate RocketMQ with distributedlog. JIRA
- rocketmq-spring, provide a adapter for spring and spring-boot. JIRA