哪一个使用RabbitTemplate或AmqpTemplate?

时间:2017-08-25 05:50:58

标签: spring spring-boot rabbitmq amqp spring-amqp

我有以下用Spring Boot编写的程序,该程序运行正常。但问题是,我不确定是否应该使用RabbitTemplateAmqpTemplate。一些在线示例/教程使用RabbitTemplate,而其他人使用AmqpTemplate

请指导最佳做法是什么,应该使用哪种做法。

@SpringBootApplication
public class BasicApplication {

    private static RabbitTemplate rabbitTemplate;
    private static final String QUEUE_NAME = "helloworld.q";

    //this definition of Queue is required in RabbitMQ. Not required in ActiveMQ
    @Bean
    public Queue queue() {
        return new Queue(QUEUE_NAME, false);
    }

    public static void main(String[] args) {
        try (ConfigurableApplicationContext ctx = SpringApplication.run(BasicApplication.class, args)) {
            rabbitTemplate = ctx.getBean(RabbitTemplate.class);
            rabbitTemplate.convertAndSend(QUEUE_NAME, "Hello World !");
        }
    }

}

2 个答案:

答案 0 :(得分:2)

在大多数情况下,对于Spring bean,我建议使用该接口,以防Spring出于任何原因创建JDK代理。这对于RabbitTemplate来说是不寻常的,所以你使用它并不重要。

在某些情况下,您可能需要RabbitTemplate上未出现在界面上的方法;这将是你需要使用它的另一种情况。

一般而言,最佳做法是让用户代码使用接口,这样您就不会对实现产生硬性依赖。

答案 1 :(得分:0)

AmqpTemplate是一个界面。 RabbitTemplate是AmqpTemplate接口的一个实现。你应该使用RabbitTemplate。