Spring引导Rabbitmq RabbitTemplate错误

hi3rlvi2  于 2022-11-29  发布在  RabbitMQ
关注(0)|答案(1)|浏览(420)

我正在处理错误"无法自动连接。没有找到" RabbitTemplate "类型的bean"。我通常尝试自动连接RabbitTemplate到我的生产者类,但它会出现类似的错误。
我试图解决在配置文件中创建bean的问题。但是没有成功。
`

package com.example.rabbitmqexample.producer;

import com.example.rabbitmqexample.model.Notification;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

@Service
public class NotificationProducer {

    @Value("${sr.rabbit.routing.name}")
    private String routingName;

    @Value("${sr.rabbit.exchange.name}")
    private String exchangeName;

    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void sendToQueue(Notification notification){
        System.out.println("Notification Sent ID: "+notification.getNotificationId());
        rabbitTemplate.convertAndSend(exchangeName,routingName,notification);
    }
}

`

cwxwcias

cwxwcias1#

例外情况表明,IOC容器中没有RabbitTemplate示例,因此无法将其注入到其他Bean声明(如“NotificationProducer”类)中。
你说过
我试图解决在配置文件中创建bean的问题。但是没有成功。

解决方案

RabbitTemplate的正确bean声明,通过尊重构造函数和依赖bean绑定,它们是许多ways来实现的。将ConnectionFactory作为RabbitTemplate的依赖bean的正确bean声明的一个实践如下。

@EnableRabbit
@Configuration
public class RabbitMQConfiguration {

    ...

    @Bean
    public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory){
        RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
        //adding perhaps some extra confoguration to template like message convertor. etc.
        ...
        return rabbitTemplate;
    }
}

根据您使用的工件版本,始终检查version文档的兼容性。

相关问题