我有以下用Spring Boot
编写的程序,效果很好。但是,问题是我不确定我应该使用RabbitTemplate
还是AmqpTemplate
。一些在线示例/教程使用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,我建议使用该接口,以防Spring由于任何原因创建JDK代理。这对于RabbitTemplate
来说是不寻常的,因此,使用哪种并不重要。
在某些情况下,您可能需要在RabbitTemplate
上未出现在接口上的方法。这是您需要使用它的另一种情况。
通常,最佳实践是让用户代码使用接口,因此您对实现没有硬性依赖。