RocketMQTemplate 注入失败的解决

RocketMQTemplate 注入失败

在使用rocketmq 发送消息时,会发现

 @Autowired
 private RocketMQTemplate rocketMQTemplate;

注入RocketMQTemplate 失败。

解决方案

究其原因是因为,配置文件中,我们没有添加

上图中蓝色的两行代码,指定发送的组名。写上后,问题解决。

好了,再来说说RocketMQTemplate 的基本使用吧~

RocketMQTemplate的使用

1、pom.xml依赖

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

2、配置文件

# 必须配置
# 指定nameServer
rocketmq.nameServer=192.168.168.168:9876
# 指定发送者组名 相当于rabbitmq的virtual host 逻辑上的划分
rocketmq.producer.group=my-group
# 其他可选配置
#rocketmq.producer.send-message-timeout=300000
#rocketmq.producer.compress-message-body-threshold=4096
#rocketmq.producer.max-message-size=4194304
#rocketmq.producer.retry-times-when-send-async-failed=0
#rocketmq.producer.retry-next-server=true
#rocketmq.producer.retry-times-when-send-failed=2

3、RocketMQTemplate的基本方法

首先使用@Autowired注入MongoTemplate(后面直接使用,就不特殊说明)

@Autowired
private RocketMQTemplate rocketMQTemplate;

简单使用

//发送消息
public class ProducerController {
    @Autowired
    private RocketMQTemplate rocketMQTemplate;

 public void send(){
     //实体类User
     User user=new User(999L,"testUser");
     //发送自定义对象
     rocketMQTemplate.convertAndSend("test_topic",user);//会自动转换为json格式
 }
}
//接收消息
@Component  //必须注入spring容器
@RocketMQMessageListener(
        topic = "test_topic",      //topic:消息的发送者使用同一个topic
        consumerGroup = "test_my-consumer",     //group:不用和生产者group相同
        selectorExpression = "*")        //tag
  // 在RocketMQ中消费者和发送者组没有关系
  // 如果两个消费者groupname和topic都一样,则二者轮循接收消息
  // 如果两个消费者topic一样,而group不一样,则消息变成广播机制
// RocketMQListener<>泛型必须和接收的消息类型相同
public class TestListner implements RocketMQListener<User> {
 private static final ObjectMapper MAPPER = new ObjectMapper();
    @Override
    public void onMessage(User user) {
  JsonNode jsonNode = MAPPER.readTree(user);//可以使用mapper读取json格式数据
  Long userId = jsonNode.get("userId").asLong();
        System.out.println(user);
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 浅谈Springboot整合RocketMQ使用心得

    一.阿里云官网---帮助文档 https://help.aliyun.com/document_detail/29536.html?spm=5176.doc29535.6.555.WWTIUh 按照官网步骤,创建Topic.申请发布(生产者).申请订阅(消费者) 二.代码 1.配置: public class MqConfig { /** * 启动测试之前请替换如下 XXX 为您的配置 */ public static final String PUBLIC_TOPIC = "test"

  • springboot整合rocketmq实现分布式事务

    1 执行流程 (1) 发送方向 MQ 服务端发送消息. (2) MQ Server 将消息持久化成功之后,向发送方 ACK 确认消息已经发送成功,此时消息为半消息. (3) 发送方开始执行本地事务逻辑. (4) 发送方根据本地事务执行结果向 MQ Server 提交二次确认(Commit 或是 Rollback),MQ Server 收到Commit 状态则将半消息标记为可投递,订阅方最终将收到该消息:MQ Server 收到 Rollback 状态则删除半消息,订阅方将不会接受该消息. (5)

  • RocketMQTemplate 注入失败的解决

    RocketMQTemplate 注入失败 在使用rocketmq 发送消息时,会发现 @Autowired private RocketMQTemplate rocketMQTemplate; 注入RocketMQTemplate 失败. 解决方案 究其原因是因为,配置文件中,我们没有添加 上图中蓝色的两行代码,指定发送的组名.写上后,问题解决. 好了,再来说说RocketMQTemplate 的基本使用吧~ RocketMQTemplate的使用 1.pom.xml依赖 <dependenc

  • Spring自动注入失败的解决方法

    Spring自动注入失败如何解决? 我有一个被Spring @Service注解的类(MileageFeeCalculator),它有一个用@Autowired注入的变量(rateService),但是当我用这个变量的时候,它显示为null.日志显示MileageFeeCalculator bean和MileageRateService bean都被创建了,但是当我调用service上的mileageCharge ()方法时,就会报NullPointerException错误.为什么Spring

  • 因Spring AOP导致@Autowired依赖注入失败的解决方法

    发现问题: 之前用springAOP做了个操作日志记录,这次在往其他类上使用的时候,service一直注入失败,找了网上好多内容,发现大家都有类似的情况出现,但是又和自己的情况不太符合.后来总结自己的情况发现:方法为private修饰的,在AOP适配的时候会导致service注入失败,并且同一个service在其他的public方法中就没有这种情况,十分诡异. 解决过程: 结合查阅的资料进行了分析:在org.springframework.aop.support.AopUtils中: publi

  • Spring 父类变量注入失败的解决

    目录 Spring 父类变量注入失败 下面小记下这个过程 Spring通过父类注入公用属性的技巧 XML配置方式提取父类 Annotation方式提取父类 Spring 父类变量注入失败 昨天遇到一个Action里面Service注入失败,换种说法应该说是根本没有发生注入,本来很简单的一个问题,但由于在项目中多个Action进行了继承,才最终导致了这个看似奇怪的问题. 下面小记下这个过程 收到同事问题,"有个Action请求一直调用报控指针,service一直是空的导致的!" 初步看了

  • SpringBoot Test类注入失败的解决

    如下所示 本来 bookService的引用一直是null. 导致每次测试都报空指针异常. 然后现在继承相应的 ApplicationTests类,然后使用@Component将该类注册为组件.就可以正常注入了. 补充:关于springboot test @Mapper ,@Autiwired注入无效的问题 @SpringBootTest() @RunWith(SpringRunner.class) public class ProductMapperTest { @Autowired Prod

  • springboot多模块化整合mybatis,mapper自动注入失败问题及解决

    目录 springboot多模块化整合mybatis,mapper自动注入失败 问题 解决 springboot mapper注入失败的一种原因 具体情况是 解决办法 springboot多模块化整合mybatis,mapper自动注入失败 问题 启动类添加@MapperScan或@ComponentScan,mapper类添加@Mapper或@Repository ==> Consider defining a bean of type 'com.ten.mapper.UserMapper'

  • springboot使用@value注入配置失败的解决

    目录 springboot使用@value注入配置文件失败 问题解决方向一 问题解决方向二 @Value注入失败,注入值为null的问题 大概就是下面这样 结果不知道为什么,@Value注入一直为空?? 原因如下 解决办法 springboot使用@value注入配置文件失败 遇到的问题原因是:类中注入对象不能用static. 问题解决方向一 1.改为如图示,去掉static 问题解决方向二 1.仍然定义静态变量,但在其set方法上使用@Value进行赋值 2.仍然定义静态变量,同时定义一个普通

  • 解决netty中spring对象注入失败的问题

    目录 netty中spring对象注入失败 发现了问题所在 在netty中注入spring成份 可以通过以下方式 netty中spring对象注入失败 今天在做项目的时候发现在netty中注入service失败,百度许久后也找不到答案(@Component,@PostConstruct)未起作用,后灵光一现 发现了问题所在 如图: 这些地方都必须通过spring注入才能实现其他依赖注入,之前这里都是采用new的,所以导致spring注入失败 在netty中注入spring成份 前不久,在Nett

  • spring+springmvc整合mabytis时mapper注入失败问题解决方法

    好久不搭架构,今天使用spring+springmvc整合mabytis的时候,坑爹的两个问题发生了. 花了一晚上解决这两个问题.现在将错误经验总结分享下,避免以后遇到坑继续往里跳. 1. 单元测试的时候,单元测试失败报错: A ServletContext is required to configure default servlet handling 十月 28, 2016 9:03:33 下午 org.springframework.context.support.GenericAppl

  • 关于Webpack dev server热加载失败的解决方法

    利用Webpack dev server作为热加载服务器时,出现以下错误: XMLHttpRequest cannot load http://localhost:8080/dist/06854fc8988da94501a9.hot-update.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not

随机推荐