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-oriented, simplicity, flexibility, and language independent in distributed heterogeneous environments. Conformance to these specifications will make it possible to develop a heterogeneous messaging applications across all major platforms and operating systems. JIRA
So far, RocketMQ only support message filtering feature by
TAG, but one message only can own one tag, this 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 continually.
A Consistent Hash allocate strategy is valuable for the developer who cares 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’s cool if we support a new global order messaging mechanism, without hot-points problem. JIRA
Distributed Transaction Messaging
Undoubtedly, transaction messaging is very frequently-used in most business.
But it is unfortunate that users must implement transaction mechanism by themselves until now, may be they need DataBase to implement it.
It’s time to support distributed transaction messaging to make it convenient for the user, help them handle complex business with skill and ease. JIRA
Non-Redundant Message Delivery Mechanism
The duplicated messages are worrisome. It will cost much if user need non-repeating messages.
In most cases, user need store the consume records to judge a message is replicated or not, and the store stage should guarantee strong consistency. As you see, it’s very complicated, so support a strict and non-redundant message delivery mechanism is impending. JIRA
Intellective HA Architecture
RocketMQ uses master-slave as HA architecture, which has low latency and high throughput features, but this program need 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 the result of surveying 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