spring - 使用 RabbitTemplate 或 AmqpTemplate 哪一个?

标签 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 !");
        }
    }

}

最佳答案

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

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

不过,一般来说,最佳实践是让用户代码使用接口(interface),这样您就不会对实现产生硬依赖。

关于spring - 使用 RabbitTemplate 或 AmqpTemplate 哪一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45875167/

相关文章:

java - Spring NamedParameterJdbcTemplate 查询的性能非常慢

java - Autowired 在 Spring Boot 中返回 null

spring - 相同的端点,有和没有 @RequestParam

java - 每次登录我的 Spring Boot 项目时都会重定向到错误页面

rabbitmq - AMQP 有什么意义?

events - Grails: rabbitmq plugin vs rabbitmq-tasks plugin vs Plugin Platform Core Events Bus API

java ldap - 获取信息是 AD 中的一些变化

java - 在 Bluemix 上运行 Spring Boot 应用程序时出错

spring - 使用自定义分隔符通过 spring boot 生成 DDL

python - 向 rabbitmq 发送 celery 任务消息