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

  • 相关阅读:
    开发网站邮件发送模块
    HttpModule的Init事件
    一个产品留言统计查寻的分析比较
    Js中清空文件上传字段(input type=file )
    Asp.net生成Excel报表
    jQuery与开发的相关js文件包含顺序
    trycatch 与 Response.End()
    asp.net2.0中的Usercontrol动态创建
    客户javascript端验证图片文件大小与规格使用Image对象
    JQuery 常用代码收集
  • 原文地址:https://www.cnblogs.com/fx-blog/p/11737658.html
Copyright © 2011-2022 走看看