Spring Boot整合RocketMQ

  1. pom.xml导入RocketMQ依赖

    <dependency>
        <groupId>org.apache.rocketmq</groupId>
        <artifactId>rocketmq-spring-boot-starter</artifactId>
        <version>2.2.2</version>
    </dependency>
    
  2. application.yml中添加配置

    rocketmq:
        name-server: 127.0.0.1:9876
        producer:
            group: x
            access-key: myaccesskey
            secret-key: mysecretKey
            send-message-timeout: 10000
            tls-enable: true
        consumer:
            group: x
            access-key: myaccesskey
            secret-key: mysecretKey
            tls-enable: true
    
  3. 创建MQ工具类

    public class MqUtil {
    
        private final RocketMQTemplate rocketMQTemplate;
    
        public MqUtil(RocketMQTemplate rocketMQTemplate) {
            this.rocketMQTemplate = rocketMQTemplate;
        }
    
        /**
         * 单条通知发送
         *
         * @param topic   主题
         * @param message 消息
         */
        public void convertAndSend(String topic, Object message) {
            rocketMQTemplate.convertAndSend(topic, message);
        }
    
        /**
         * 批量通知发送
         *
         * @param topic    主题
         * @param messages 消息集合
         */
        public <T extends Message<?>> SendResult syncSend(String topic, Collection<T> messages) {
            return rocketMQTemplate.syncSend(topic, messages);
        }
    
        /**
         * 批量通知发送
         *
         * @param topic        主题
         * @param messages     消息集合
         * @param sendCallback 回调函数
         */
        public <T extends Message<?>> void asyncSend(String topic, Collection<T> messages, SendCallback sendCallback) {
            rocketMQTemplate.asyncSend(topic, messages, sendCallback);
        }
    }
    
  4. 注入工具类Bean

    @Bean
    public MqUtil mqUtil(RocketMQTemplate rocketMQTemplate) {
      return new MqUtil(rocketMQTemplate);
    }
    
  5. 测试发消息

    @Resource
    private MqUtil mqUtil;
    
    @Test
    public void test() {
      mqUtil.convertAndSend(TopicConstant.TOPIC_B, "123456");
    }
    
  6. 订阅接收消息

    @Slf4j
    @Service
    @RequiredArgsConstructor(onConstructor = @__({@Autowired}))
    @RocketMQMessageListener(consumerGroup = GroupConstant.GROUP_A, topic = TopicConstant.TOPIC_B)
    public class TopicAConsumer implements RocketMQListener<Message> {
    
        @Override
        public void onMessage(Message message) {
            log.info(JsonUtil.toJsonStr(message));
        }
    }
    
相关推荐
gb42152871 小时前
springboot中Jackson库和jsonpath库的区别和联系。
java·spring boot·后端
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭10 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
AskHarries12 小时前
Spring Cloud OpenFeign快速入门demo
spring boot·后端
isolusion13 小时前
Springboot的创建方式
java·spring boot·后端
Yvemil714 小时前
《开启微服务之旅:Spring Boot Web开发举例》(一)
前端·spring boot·微服务
星河梦瑾15 小时前
SpringBoot相关漏洞学习资料
java·经验分享·spring boot·安全
计算机学长felix16 小时前
基于SpringBoot的“交流互动系统”的设计与实现(源码+数据库+文档+PPT)
spring boot·毕业设计
.生产的驴16 小时前
SpringBoot 对接第三方登录 手机号登录 手机号验证 微信小程序登录 结合Redis SaToken
java·spring boot·redis·后端·缓存·微信小程序·maven
顽疲16 小时前
springboot vue 会员收银系统 含源码 开发流程
vue.js·spring boot·后端
撒呼呼17 小时前
# 起步专用 - 哔哩哔哩全模块超还原设计!(内含接口文档、数据库设计)
数据库·spring boot·spring·mvc·springboot