2011-12-23 25 views
-2

任何人都可以提供示例程序來在Java中將消息出隊嗎?我想要獨立的Java程序,將執行此任務。獨立Java可以將JMS消息出隊

比方說,甲骨文公頃排隊使用JMS_TEXT_MESSAGE隊列「myqueue」有效載荷類型「myowner」 &現在我要離隊使用Java這些消息,其所有者是消息。任何人都可以在獨立的Java中提供示例程序嗎?

謝謝!


@Ratha,我想你的樣品&我可以通過所有消息&瀏覽它的作品完美!

然而,當我嘗試使用這些消息,我還以爲他們會從隊列&顯示它通過以下線路遭到移除對我說:

System.out.println("MESSAGE RECEIVED " + msg.getText()); 

但是,相反,它給了我錯誤的下面一行:

MessageConsumer consumer = session.createConsumer(queue); 

Exception in thread "main" java.lang.AbstractMethodError: oracle.jms.AQjmsSession.createConsumer(Ljavax/jms/Destination;)Ljavax/jms/MessageConsumer; 
at OracleAQClient.consumeMessage(OracleAQClient.java:141) 
at OracleAQClient.main(OracleAQClient.java:159) 

你能幫我解決這個錯誤嗎?

謝謝!

+0

您應該能夠從JMX控制檯隊列中刪除郵件。 – CoolBeans 2011-12-23 07:12:42

+0

@ Mike:在這裏你不會得到整個程序。只是解釋你迄今爲止所嘗試的任何事情。 – karthik 2011-12-23 07:41:50

回答

0

可以正確的供應商特定的或廠商中立的代碼.. 出隊的消息時,使用以下代碼塊

public static void consumeMessage(String user, String queueName) { 
    Queue queue; 
    try { 
    QueueConnection QCon = getConnection(); 
    Session session = QCon.createQueueSession(false,Session.CLIENT_ACKNOWLEDGE); 
    QCon.start(); 
    queue = ((AQjmsSession) session).getQueue(user, queueName); 
    MessageConsumer consumer = session.createConsumer(queue); 
    TextMessage msg = (TextMessage) consumer.receive(); 
    System.out.println("MESSAGE RECEIVED " + msg.getText()); 

    consumer.close(); 
    session.close(); 
    QCon.close(); 
    } catch (JMSException e) { 
    e.printStackTrace(); 
    } 
} 

自己編寫的,這些職位,其包含更詳細的代碼;

http://vvratha.blogspot.com/2011/10/creating-queue-in-oracleaq.html

http://vvratha.blogspot.com/2011/10/java-client-for-jndi-lookup-with-ojms.html

+0

簡單地鏈接到其他網站的答案不是很好的答案。 – 2011-12-23 17:23:50

+1

糾正了它 – Ratha 2011-12-23 17:30:19