2017-03-01 18 views
0

我正在从Azure服务总线读取消息的应用程序上工作。这个应用程序是使用Spring引导,Spring jms和Qpid jms客户端创建的。我能够正确地从队列中读取消息,没有任何问题。 PFB我正在使用的代码来读取消息。如何在Spring引导中动态添加不同的目标到JMSListener Annotation?

@Service 
public class QueueReceiver { 
@JmsListener(destination = "testing") 
public void onMessage(String message) { 
    if (null != message) { 
     System.out.println("Received message from Queue: " + message); 
    } 
}} 

的问题是,我们有不同的目的地不同environemnts,如testingdevtesting-qaqatesting-prodproduction,所有这些值都设置为azure.queueName在不同的应用程序 - (ENV)分别.proerpties。我想通过JmsListener Annotation动态地将这些目标传递给目标。当我尝试使用

@Value("${azure.queueName}") 
private String dest; 

并通过DEST来注解像@JmsListener(destination = dest)

我得到The value for annotation attribute JmsListener.destination must be a constant expression错误。在使用此错误搜索后,我发现我们无法将动态值传递给Annotation。请帮助我如何解决此问题或任何其他解决方案。

回答

1

使用

destination="${azure.queueName}" 

即把占位符的注释直接。

+0

非常感谢,这是行得通的。 – anonymous

相关问题