2011-12-23 55 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