RocketMQ 过滤消息
2023-07-12 17:23 更新
maven 工程添加库
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.4.0</version>
</dependency>
gradle 工程添加库
compile 'org.apache.rocketmq:rocketmq-client:4.4.0'
注意:
客户端版本要和服务端版本的一致,或者会发生一些奇怪的问题:
我遇到过版本不一致会发生,消息无法确认消息消费,也就是说 客户端已经消费了,也提交成功了,但是服务端没有同步到!
注意:
tag的使用!
要到控制台创建 Topic 队列名称
官方过滤消息例子:
http://rocketmq.apache.org/docs/filter-by-sql92-example/
发送消息
DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
producer.start();
Message msg = new Message("TopicTest",
tag,
("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET)
);
// Set some properties.
msg.putUserProperty("a", String.valueOf(i));
SendResult sendResult = producer.send(msg);
producer.shutdown();
消费消息
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name_4");
// only subsribe messages have property a, also a >=0 and a <= 3
consumer.subscribe("TopicTest", MessageSelector.bySql("a between 0 and 3");
consumer.registerMessageListener(new MessageListenerConcurrently() {
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
// 消息处理
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
});
consumer.start();
以上内容是否对您有帮助:
更多建议: