RocketMq集成SpringBoot(待完善)

环境

jdk1.8, springboot2.7.3

Maven依赖

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.7.3</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>        

        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.2.2</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.rocketmq</groupId>
                    <artifactId>rocketmq-client</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-client</artifactId>
            <version>4.9.5</version>
        </dependency>

配置文件

rocketmq.name-server=192.168.6.128:9876
#生产通用群组, 也可单独指定
rocketmq.producer.group=springBootGroup
#消费通用群组, 也可单独指定
rocketmq.consumer.group=testGroup
server.port=9000

代码

生产者发送消息

@RestController
@RequestMapping("/producer")
public class ProducerController {

    @Autowired
    private ProducerService producerService;

    // 发送同步消息
    @PostMapping("/sendSync")
    public Object sendSync(@RequestBody MessageReq req) {
        return producerService.sendSyncMessage(req.getTopic(), req.getTag(), req.getMessage());
    }

    // 发送异步消息
    @PostMapping("/sendAsync")
    public Object sendAsyncMessage(@RequestBody MessageReq req) {
        producerService.sendAsyncMessage(req.getTopic(), req.getTag(), req.getMessage());
        return "200";
    }
}
@Service
public class ProducerService {

    @Autowired
    private RocketMQTemplate rocketMQTemplate;

    /**
     * 发送同步消息.
     * @return 发送结果
     */
    public SendResult sendSyncMessage(String topic, String tag, String message) {
        // param1: topic和tag冒号分隔
        return rocketMQTemplate.syncSend(topic + ":" + tag, message);
    }

    /**
     * 发送异步消息.
     */
    public void sendAsyncMessage(String topic, String tag, String message) {
        rocketMQTemplate.convertAndSend(topic + ":" + tag, message);
    }
}

消费者

@Component
@RocketMQMessageListener(
        consumerGroup = "SimpleStringConsumerGroup",  // consumerGroup:消费者组名
        topic = "MQ_sp_test1",                         // topic:订阅的主题
        selectorExpression = "Tag-kk||Tag-kk2",         // selectorExpression, 1. 根据Tag过滤, 多个用||分割, 也可设置*; 2. 根据SQL92语法过滤
//        selectorExpression = "*",
//        selectorType = SelectorType.SQL92,             // 设置SQL92语法过滤, 不设置默认TAG
        messageModel = MessageModel.CLUSTERING,  // messageModel: 控制消息模式。MessageModel.CLUSTERING:负载均衡;MessageModel.BROADCASTING:广播模式
        consumeMode= ConsumeMode.CONCURRENTLY    // CONCURRENTLY: 无序消费; ORDERLY: 有序消费
)
public class SimpleConsumer implements RocketMQListener<String> {

    @Override
    public void onMessage(String message) {
        System.out.println("Received message : "+ message);
    }
}

测试

同步消息

异步消息 

TAG过滤消息

1. 消费者指定了TAG, 不满足的不会消费, 状态是CONSUMED_BUT_FILTERED

消费端接收消息 

相关推荐

  1. RocketMq实战(完善)

    2023-12-12 22:10:04       55 阅读
  2. Springboot 集成 RocketMq5+ (gRPC 协议)

    2023-12-12 22:10:04       80 阅读
  3. 学习redis(完善

    2023-12-12 22:10:04       54 阅读
  4. Zookeeprt实战(完善)

    2023-12-12 22:10:04       48 阅读
  5. 【番外】Springboot集成推荐配置及十问RocketMQ

    2023-12-12 22:10:04       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-12 22:10:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-12 22:10:04       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-12 22:10:04       87 阅读
  4. Python语言-面向对象

    2023-12-12 22:10:04       96 阅读

热门阅读

  1. window下make无法识别,同时缺少mingw32-make.exe文件

    2023-12-12 22:10:04       53 阅读
  2. 容器及容器调度(云)

    2023-12-12 22:10:04       52 阅读
  3. vue中上传组件封装及使用

    2023-12-12 22:10:04       47 阅读
  4. unity Pc获取本机Mac地址

    2023-12-12 22:10:04       61 阅读
  5. react面试总结2

    2023-12-12 22:10:04       43 阅读
  6. 7-3 Left-pad

    2023-12-12 22:10:04       44 阅读
  7. Linux0.11内核源码解析-printk

    2023-12-12 22:10:04       57 阅读