zoukankan      html  css  js  c++  java
  • Spring Cloud Alibaba学习笔记(10)

    编写生产者

    集成

    添加依赖

    <dependency>
        <groupId>org.apache.rocketmq</groupId>
        <artifactId>rocketmq-spring-boot-starter</artifactId>
        <version>2.0.3</version>
    </dependency>
    

    PS:由于默认引入的rocketmq-spring-boot-starter版本为2.0.2,rocketmq-spring-boot-starter对应的RocketMQ相关依赖为4.0.0,与前文中提交的4.5.1不能完全兼容,所以需要指定rocketmq-spring-boot-starter版本为2.0.3。

    添加配置

    rocketmq:
      name-server: 127.0.0.1:9876
      producer:
        group: test-group
    

    若代码中用到了RocketMQTemplate类,则group是必填的,否则会导致应用启动失败,无法初始化RocketMQTemplate

    代码实现

    • 首先,注入RocketMQTemplate
      private final RocketMQTemplate rocketMQTemplate;

    • 编写代码,使用convertAndSend方法:
      rocketMQTemplate.convertAndSend("test-topic", Demo.builder().demoId(1).remark("哈哈哈").build());
      test-topic为topic名称;Demo是我随便建立的一个实体类,为消息体

    启动项目,调用请求,然后会RocketMQ控制台,消息页面,可以从主题下拉框中找到刚刚新建的 test-topic,点击搜索,就可以看见这条消息

    如果使用的是其他的MQ的话,将RocketMQTemplate退换以下类:
    ActiveMQ/Artemis:JmsTemplate
    RabbitMQ:AmpqTemplate
    Kaka:KafkaTemplate

    编写消费者

    集成

    同生产者集成

    代码实现

    新建DemoListener类【类名根据自己的业务】,实现RocketMQListener接口,RocketMQListener是一个泛型类,泛型就是生产者发出的消息体。
    加上@Service注解,让DemoListener给Spring管理。
    加上@RocketMQMessageListener注解,表明这个RocketMQ的Listener,配置topic属性,必须与生产者的属性相一致,否则接受不到生产者发出的消息;配置consumerGroup属性,值任意。
    代码如下:

    import lombok.AllArgsConstructor;
    import lombok.Builder;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
    import org.apache.rocketmq.spring.core.RocketMQListener;
    import org.springframework.stereotype.Service;
    
    @Slf4j
    @Service
    @RocketMQMessageListener(topic = "test-topic", consumerGroup = "test-consumer")
    public class DemoListener implements RocketMQListener<Demo> {
        @Override
        public void onMessage(Demo demo) {
            log.info("---->我收到了消息了!");
            log.info("---->" + demo.getDemoId());
            log.info("---->" + demo.getRemark());
        }
    }
    
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    class Demo{
        private Integer demoId;
        private String remark;
    }
    

    测试结果:

    如果使用的是其他的MQ的话,将@RocketMQMessageListener退换以下注解,实现接口相应改变:
    ActiveMQ/Artemis:JmsListener
    RabbitMQ:RabbitListener
    Kaka:KafkaListener

  • 相关阅读:
    团队介绍及项目介绍
    2017年秋季个人阅读计划
    软件需求分析阅读笔记
    Cookie学习总结
    暑期兴趣班第二天学习总结
    暑期兴趣班第一天学习总结
    个人总结
    第十六周工作总结
    第十五周工作总结
    第十四周工作总结
  • 原文地址:https://www.cnblogs.com/fx-blog/p/11737658.html
Copyright © 2011-2022 走看看