我们如何基于环境交替使用@RabbitListener和@JMSListener?

问题描述

实际上,我有一个内部使用Spring Boot应用程序,该应用程序使用@RabbitListener来使用RabbitMQ消息,并且已经将同一应用程序迁移到了Azure中,该应用程序使用了@JMSListener来使用AzureServiceBus消息。

我们为本地和Azure维护相同的代码。因此,由于有这两个侦听器,我打算在两个不同的类中使用两个不同的侦听器复制具有相同内容的相同使用者代码

使用JMSListener的用户

is_err

使用RabbitListener的消费者

@JmsListener(destination = "${queue}",concurrency = "${threads}",containerFactory = "defaultContainer")
public Message processMessage(@Payload final String message) {
    //do stuff with same content
}

是否有可能避免在两个类中重复代码?只有一个消费者,我们如何才能即时处理听众?有人可以建议我出去吗?

解决方法

您可以将两个注释添加到具有autoStartup属性的同一方法中,该属性根据活动的Spring概要文件设置。

对于@RabbitListener,注释本身具有autoStartup属性,但是在两种情况下,都有Spring Boot属性auto-startup用于控制容器是否启动。