如何在所有 Java 类 中使用 RabbitTemplate

How to use RabbitTemplate in all Java classes

我将我的代码编辑成这个配置:

@SpringBootApplication
public class EndPoint {


String QUEUE_PROCESSING_TRANSACTION = "processing-process-queue";
String QUEUE_DATABASE_TRANSACTION = "database-transa-queue";
......

@Bean
public Queue queueProcessingTransaction() {
    return new Queue(QUEUE_PROCESSING_TRANSACTION, true);
}

@Bean
public Queue queueDatabaseEventLogs() {
    return new Queue(QUEUE_DATABASE_EVENT_LOGS, true);
}

@Bean
public Binding bindingQueueProcessingTransaction() {
   return BindingBuilder.bind(new Queu........
}

@Bean
public CachingConnectionFactory connectionFactory() {
    CachingConnectionFactory connectionFactory = new CachingConnectionFactory(HOST);
    return connectionFactory;
}

@Bean
public AmqpAdmin amqpAdmin(CachingConnectionFactory connectionFactory) {
RabbitAdmin admin = new RabbitAdmin(connectionFactory);
.........
admin.declareQueue(new Queue(QUEUE_PROCESSING_TRANSACTION, true));
return admin;
}

@Bean
public RabbitTemplate processingTemplate(CachingConnectionFactory connectionFactory) {
RabbitTemplate processingTemplate = new RabbitTemplate(connectionFactory);
processingTemplate.setExchange(EXCHANGE_PROCESSING);
.......
return processingTemplate;
}

之前我在 Java class 中使用了这个配置,我在第二个 Java class 中扩展了它以访问 RabbitTemplate。 我如何在 Java classes 中使用 RabbitTemplate?可能已经在 Spring?

中设计了实施设施

您可以只添加另一个创建从连接工厂开始的模板的 bean:

@Bean
public RabbitTemplate rabbitTemplate(CachingConnectionFactory connectionFactory) {
   RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
   return rabbitTemplate;
}

您可以在容器管理中自动装配它 类:

@Autowired private RabbitTemplate rabbitTemplate;

您可以将 RabbitTemplate bean 注入到另一个 Spring Bean 中并使用它,例如您可以创建一个新的 Spring Bean(组件),如下所示:

@Component
public class MyComponent {

  @Autowired
  private RabbitTemplate template;

  public void testRabbitTemplate() {
    System.out.println(template);
  }
}

请记住,仅当您从 Spring 上下文中检索 MyComponent 时,注入才有效(即您不得使用 new 关键字实例化它)。

您也可以在 EndPoint class 中注入相同的 RabbitTemplate,只需将以下行添加到 class 正文中:

@Autowired private RabbitTemplate template;