RocketMQ集成Springboot --Chapter5

RocketMQ tag过滤和sql92语法过滤

tag过滤

生产者,由于springboot没有专门对mq进行tag标记的方法,只是在topic:后面加上,所以只需 rocketMQTemplate.sendOneWay(“tagFilterBoot:TagA”,msg1);标记即可

生产者代码如下

    /**
     *生产者
     * tag过滤
     */
    @Test
    public void sendTagFilterMsg(){
        Message msg1 = MessageBuilder.withPayload("消息A").build();
        rocketMQTemplate.sendOneWay("tagFilterBoot:TagA",msg1);

        Message msg2 = MessageBuilder.withPayload("消息B").build();
        rocketMQTemplate.sendOneWay("tagFilterBoot:TagB",msg2);

        Message msg3 = MessageBuilder.withPayload("消息C").build();
        rocketMQTemplate.sendOneWay("tagFilterBoot:TagC",msg3);
    }

消费者在注解处添加selectorExpression = "TagA || TagC"表达式选项即可。

消费者代码如下

  /**
     *消费者
     * tag过滤
     */
@Component
@RocketMQMessageListener(consumerGroup = "tagFilterGroupBoot",topic = "tagFilterBoot",selectorExpression = "TagA || TagC")
public class TagFilterTopicListener implements RocketMQListener<MessageExt> {
    @Override
    public void onMessage(MessageExt messageExt) {
        System.out.println("收到的消息:"+new String(messageExt.getBody(), Charset.defaultCharset()));
    }
}

sql92过滤

生产者 setHeader就是设置属性

生产者代码如下

    /**
     * sql92过滤
     */
    @Test
    public void sendSQL92FilterMsg(){
        Message msg1 = MessageBuilder.withPayload("美女A,年龄22,体重45")
                .setHeader("age",22)
                .setHeader("weight",45)
                .build();
        rocketMQTemplate.sendOneWay("SQL92FilterBoot",msg1);

        Message msg2 = MessageBuilder.withPayload("美女B,年龄33,体重65")
                .setHeader("age",33)
                .setHeader("weight",65)
                .build();
        rocketMQTemplate.sendOneWay("SQL92FilterBoot",msg2);

        Message msg3 = MessageBuilder.withPayload("美女C,年龄55,体重99")
                .setHeader("age",55)
                .setHeader("weight",99)
                .build();
        rocketMQTemplate.sendOneWay("SQL92FilterBoot",msg3);
    }

消费者 只需要加上如下注解即可
selectorType = SelectorType.SQL92,selectorExpression = “age>23 and weight>80”
selectorType设置类型
selectorExpression过滤条件

消费者代码如下

@Component
@RocketMQMessageListener(consumerGroup = "SQL92FilterGroupBoot",topic = "SQL92FilterBoot",selectorType = SelectorType.SQL92,selectorExpression = "age>23 and weight>80")
public class SQL92FilterTopicListener implements RocketMQListener<MessageExt> {
    @Override
    public void onMessage(MessageExt messageExt) {
        System.out.println("收到的消息:"+new String(messageExt.getBody(), Charset.defaultCharset()));
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢少迪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值