大概记一下RocketMQ和Spring boot的整合

关于怎么搭建RockerMQ先不讲

首先生产者

 <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.0.3</version>
  </dependency>
application.properties
rocketmq.producer.group=CMS
rocketmq.name-server=172.20.5.2:9876;
Controller
public class BookController {
    @Autowired
    private RocketMQTemplate template;
    @GetMapping("/books")
    public ModelAndView books(){
        List<Book> books = new ArrayList<>();
        //至于为什么用这个MessageBuilder 完全是为了与消费者对应 消费者也用的Message(MessageExt)类型 只不过这个有时间戳
        //或者得到重试次数 以及许多参数当然你也可以直接写String 生产者重试次数是两次 有三种方式发送 同步 异步 和 one way
        //前两种都有返回结果SendResult 下面代码默认是同步 他也有SendResult 只不过藏在代码里 下面的topic:tag 是有讲究的在可视化界面
        //直观的看到了
        template.convertAndSend("topic:tag", MessageBuilder.withPayload("111111111111111111").build());

消费者

package com.example.demo;

import org.apache.rocketmq.common.message.MessageExt;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;

import java.io.UnsupportedEncodingException;

@Component
//topic selectExpression对应生产者的 consumerGroup随便写
@RocketMQMessageListener(topic = "topic",selectorExpression = "tag",consumerGroup = "listener1")
public class MessageListener1 implements RocketMQListener<MessageExt> {
    @Override
    public void onMessage(MessageExt messageExt) {

        try {
            //消费者发生异常或重试 默认是重试16次有一定时间间隔 1s 2S 5s 10s 30S 1min
            int i= 0;
            i =i/0;
            String messageStr = new String(messageExt.getBody(), "UTF-8");
            System.out.println("我是listener1"+messageStr);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }
}

这个下面有消费者 not online 我们忽略掉就好 我们只需要关注 not yet consume  和consume 两种状态

另外RocketMq 有两种消费模式 默认是集群 比如你发了二十条消息 有两个一模一样的消费者 

consumerGroup = "listener1"必须一样(不一样就和广播效果一样当做两个消费者处理) 然后两个平分二十条 至于广播就一人消费20条 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值