Spring整合RocketMQ(二)

Spring整合RocketMQ(二)

消息过滤

根据tag

这个就是案例中消费者的yml中配置的,每个消费者只会接收到自己订阅的消息

在这里插入图片描述

根据SQL

生产者
// 为message设置用户属性
msg.putUserProperty("index", String.valueOf(index));
消费者
consumer.subscribe("test_topic", MessageSelector.bySql("index >= 5"));
测试

发送index为1的消息

在这里插入图片描述

控制台

在这里插入图片描述

发送index为10的消息

在这里插入图片描述

控制台

在这里插入图片描述

按照发送方式分类

同步消息

Producer发送同步消息后,需要等待broker响应信息,一般用于比较重要的消息,必须确认消息是否发送成功

案例中使用的都是同步消息

异步消息

Producer发送异步消息后,不需要等待broker响应即可直接返回,这就是一开始提到的MQ提供的特性,异步消息

Producer可以定义一个回调函数去接收broker响应结果

使用如下方法发送消息即可

defaultMQProducer.request(new Message(topic, tags, message.getBytes()), new RequestCallback() {
    @Override
    public void onSuccess(Message message) {
        System.out.printf("异步消息发送成功:%s", message);
    }

    @Override
    public void onException(Throwable throwable) {
        System.out.printf("出现了异常,异常信息:%s", throwable.getMessage());
    }
}, 10);

单向消息

单向消息主要用于对发送结果不敏感,不会影响业务的模块,无需Producer监听broker响应,常用于日志发送

使用如下方法发送消息即可

defaultMQProducer.sendOneway(msg);

对比

发送方式发送速度反馈可靠性
同步发送有(同步方式接收)无消息丢失
异步发送有(回调方式接收)无消息丢失
单向发送最快可能丢失

按照功能对消息分类

生产者可以发送四类消息分别是

普通消息

刚刚的案例中发送的就是普通消息

延时消息

现在RocketMq并不支持任意时间的延时,需要设置几个固定的延时等级,从1s到2h分别对应着等级1到18

等级对应延迟时间
11s
25s
310s
430s
51m
62m
73m
84m
95m
106m
117m
128m
139m
1410m
1520m
1630m
171h
182h

只需要在发送消息的时候设置延迟级别即可

Message msg = new Message(topic, tags, message.getBytes());
msg.setDelayTimeLevel(1);

顺序消息和事务消息放在后面两篇文章

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

芝麻\n

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

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

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

打赏作者

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

抵扣说明:

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

余额充值