2013-01-04 43 views
0

我在activemq服務器上有10個隊列。 我有生產者想要在其中一個隊列上推送消息(生產者將選擇隊列隨機運行時間將消息放入隊列中),如何在createProducer方法中傳遞目標名稱。 我知道我需要傳遞一個類型爲Destination的對象。生產者會知道服務器上的隊列名稱。是否可以將字符串傳遞(或轉換)爲目標對象類型並將其傳遞給創建生產者方法。在activemq服務器上獲取queuename來推送消息

謝謝

回答

1

如果我明白你的問題;

如果您正在運行Java並擁有有效會話,則可以使用Session.createQueue();

// Create a Destination using the queue name 
Destination destination = session.createQueue("queue name"); 

// Create a MessageProducer from the Session to the Queue 
MessageProducer producer = session.createProducer(destination); 

Here is a complete example of doing this at the Apache site

+0

感謝您回覆Joachim,我知道這樣做,但是如果我已經在服務器上有一個物理隊列,我還需要createQueue嗎? (我已經在服務器上創建了一些其他程序(類說)的物理隊列)。如果我已經有服務器上的隊列,我知道這個名字,那麼我不能說類似「session.createProducer(」queuename作爲字符串類型>>)。有沒有辦法將字符串轉換爲目標,因此我不需要調用(我知道createQueue不會再創建隊列,如果已經存在的話) – Manglesh

+0

@Manglesh createQueue是一個有點令人困惑的名字,因爲它實際上並沒有創建隊列。 ;'給定一個隊列名創建一個隊列標識......注意這個方法不是用來創建物理隊列的。_隊列的物理創建是一個管理任務,不能由JMS API發起。再次,我可能無法正確理解你的問題...? –

+0

我有3個部分(我的應用程序,第一個生產者,第二個在服務器上創建物理隊列,第三個消費者)我已經在第二部分創建了隊列。 H我希望生產者/消費者用來推送和接收消息的服務器上的物理隊列。第二部分,在創建隊列的同時,我通過生產者發送垃圾郵件並由接收者丟棄來創建隊列。創建隊列運行時間的原因是因爲我會知道在運行時創建的隊列數量。所以我使用這種方法,而不是通過在xml中定義來預先創建隊列 – Manglesh

相關問題