QMQ

QMQ QMQ是去哪儿网内部广泛使用的消息中间件,自2012年诞生以来在去哪儿网所有业务场景中广泛的应用,包括跟交易息息相关的订单场景; 也包括报价搜索等高吞吐量场景。

目前在公司内部日常消息qps在60W左右,生产上承载将近4W+消息topic,消息的端到端延迟可以控制在10ms以内。

特性

主要提供以下特性:

异步实时消息 延迟/定时消息(支持任意秒级) 广播消息(每个Consumer都收到相同消息,比如本地cache更新) 基于Tag的服务端过滤 Consumer端幂等处理支持 Consumer端filter 消费端支持按条ack消息 死信消息 结合Spring annotation使用的简单API 提供丰富的监控指标 接入OpenTracing 事务消息 Consumer的处理能力也可以方便扩容缩容 Server可以随心所欲扩容缩容 Java Client, .NET Client 消息投递轨迹(即将开源) 历史消息的自动备份(即将开源) 有序消息(即将开源)

版本要求

JDK最低版本要求

Client: 1.7及其以上版本

Server: 1.8及其以上版本

快速开始

Maven

<dependency>
    <groupId>com.qunar.qmq</groupId>
    <artifactId>qmq</artifactId>
    <version>1.1.3</version>
</dependency>

发送消息

MessageProducerProvider producer = new MessageProducerProvider();
producer.init();

Message message = producer.generateMessage("your subject");
message.setProperty("key", "value");
//发送延迟消息
//message.setDelayTime(15, TimeUnit.MINUTES);
producer.sendMessage(message);

消费消息

@QmqConsumer(subject = "your subject", consumerGroup = "group", executor = "your executor")
public void onMessage(Message message){
    //process your message
    String value = message.getStringProperty("key");
}

参考资料

快速开始