## RocketMQ Awesome
[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)

Apache RocketMQ is a cloud native messaging and streaming platform, making it simple to build event-driven applications.

----------
## Apache RocketMQ Community
* [RocketMQ](https://github.com/apache/rocketmq)

[![RocketMQ Star History](https://api.star-history.com/svg?repos=apache/rocketmq&type=Date)](https://star-history.com/#apache/rocketmq)

* [RocketMQ-Externals](https://github.com/apache/rocketmq-externals)

[![Externals Star History](https://api.star-history.com/svg?repos=apache/rocketmq-externals&type=Date)](https://star-history.com/#apache/rocketmq-externals)

* [RocketMQ-Client-Go](https://github.com/apache/rocketmq-client-go)

[![Go SDK Star History](https://api.star-history.com/svg?repos=apache/rocketmq-client-go&type=Date)](https://star-history.com/#apache/rocketmq-client-go)

----------
## Contact us
* Mailing Lists: <https://rocketmq.apache.org/about/contact/>
* Home: <https://rocketmq.apache.org>
* Docs: <https://rocketmq.apache.org/docs/quick-start/>
* Issues: <https://github.com/apache/rocketmq-awesome/issues>
* Ask: <https://stackoverflow.com/questions/tagged/rocketmq>
* Slack: <https://rocketmq-community.slack.com/>
 
---------- 
## How to Contribute
  Contributions are warmly welcome! Be it trivial cleanup, major new feature or other suggestion. Read this [how to contribute](http://rocketmq.apache.org/docs/how-to-contribute/) guide for more details. 
   
   
----------
## License
  [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) Copyright (C) Apache Software Foundation
Footer

