2017-03-01 58 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

相關問題