我们如何根据env交替使用@RabbitListener和@JMSListener?
How can we use @RabbitListener and @JMSListener alternatively based on env?
实际上,我有本地 spring 引导应用程序,它使用 @RabbitListener 使用 rabbitMQ 消息,我已将相同的应用程序迁移到使用 @JMSListener 使用 AzureServiceBus 消息的 azure。
我们为本地和 Azure 维护相同的代码。因此,由于这两个侦听器,我计划在两个不同的 类 中复制相同的消费者代码,内容相同,两个不同的侦听器
使用 JMSListener 的消费者:
@JmsListener(destination = "${queue}", concurrency = "${threads}", containerFactory = "defaultContainer")
public Message processMessage(@Payload final String message) {
//do stuff with same content
}
使用 RabbitListener 的消费者:
@RabbitListener(queues = "${app.rabbitmq.queue}")
public Message processMessage(@Payload final String message) {
//do stuff with same content
}
是否有可能避免两个 类 中的重复代码?我们如何处理只有一个消费者的听众?有人可以推荐我吗?
您可以使用 autoStartup
属性 设置将两个注释添加到同一个方法,Spring 配置文件处于活动状态。
对于 @RabbitListener
注释本身有一个 autoStartup
属性 但是,在这两种情况下,都有 Spring 引导属性 auto-startup
来控制容器是否启动。
实际上,我有本地 spring 引导应用程序,它使用 @RabbitListener 使用 rabbitMQ 消息,我已将相同的应用程序迁移到使用 @JMSListener 使用 AzureServiceBus 消息的 azure。
我们为本地和 Azure 维护相同的代码。因此,由于这两个侦听器,我计划在两个不同的 类 中复制相同的消费者代码,内容相同,两个不同的侦听器
使用 JMSListener 的消费者:
@JmsListener(destination = "${queue}", concurrency = "${threads}", containerFactory = "defaultContainer")
public Message processMessage(@Payload final String message) {
//do stuff with same content
}
使用 RabbitListener 的消费者:
@RabbitListener(queues = "${app.rabbitmq.queue}")
public Message processMessage(@Payload final String message) {
//do stuff with same content
}
是否有可能避免两个 类 中的重复代码?我们如何处理只有一个消费者的听众?有人可以推荐我吗?
您可以使用 autoStartup
属性 设置将两个注释添加到同一个方法,Spring 配置文件处于活动状态。
对于 @RabbitListener
注释本身有一个 autoStartup
属性 但是,在这两种情况下,都有 Spring 引导属性 auto-startup
来控制容器是否启动。