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、配置文件

# 必须配置# 指定nameServerrocketmq.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(后面直接使用,就不特殊说明)

@Autowiredprivate 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);    }}

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

蚁穴虽小,溃之千里。

RocketMQTemplate 注入失败的解决

相关文章:

你感兴趣的文章:

标签云: