任何人都可以提供示例程序来使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)
你能帮我解决一下这个错误吗?
谢谢!
答案 0 :(得分: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