使 JMS 消息出列的独立 Java [关闭]
Posted
技术标签:
【中文标题】使 JMS 消息出列的独立 Java [关闭]【英文标题】:Standalone Java to dequeue JMS messages [closed] 【发布时间】:2012-01-26 15:30:55 【问题描述】:任何人都可以提供示例程序以在 Java 中使消息出队吗?我想要独立的java程序来完成这个任务。
假设 Oracle ha 使用 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)
你能帮我解决这个错误吗?
谢谢!
【问题讨论】:
您应该能够从 jmx-console 中的队列中删除消息。 @Mike:在这里你不会得到整个程序。只需解释到目前为止您尝试过的任何事情。 【参考方案1】:您可以修改供应商特定或供应商中立的代码。 要使消息出队,请使用以下代码块
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
【讨论】:
只链接到其他网站的答案不是好的答案。以上是关于使 JMS 消息出列的独立 Java [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
对于独立应用程序(对于 Spring JMS),Java main 方法应该是啥?