下面的程序enqueue的时候可以成功的把消息入进队列里面,但是dequeue的时候message却为null,这是为什么呢?难道我的代码写得有错吗?
困扰我很长时间了!大家帮我解决解决吧! public static void main(String[] args) throws Exception{
AQjmsConnection connection = AqUtils.getConnection("aqadm", "aqadm");
AQjmsSession session=(AQjmsSession)connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
enqueue(connection,session);
dequeue(connection,session);
session.close();
connection.close();
} public static void dequeue(AQjmsConnection connection,AQjmsSession session) throws JMSException,AQException {
Queue queue=session.getQueue("aqadm", "wj_aqqueue");
Message message=receiver.receiveNoWait();
System.out.println(message);
}
public static void enqueue(AQjmsConnection connection,AQjmsSession session) throws JMSException,AQException {
Queue queue=session.getQueue("aqadm","wj_aqqueue");
BytesMessage message=session.createBytesMessage();
message.setJMSCorrelationID("fuck");
message.writeBytes("测试的一个入队消息".getBytes());
QueueSender sender = session.createSender(queue);
sender.send(queue,message);
}
困扰我很长时间了!大家帮我解决解决吧! public static void main(String[] args) throws Exception{
AQjmsConnection connection = AqUtils.getConnection("aqadm", "aqadm");
AQjmsSession session=(AQjmsSession)connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
enqueue(connection,session);
dequeue(connection,session);
session.close();
connection.close();
} public static void dequeue(AQjmsConnection connection,AQjmsSession session) throws JMSException,AQException {
Queue queue=session.getQueue("aqadm", "wj_aqqueue");
Message message=receiver.receiveNoWait();
System.out.println(message);
}
public static void enqueue(AQjmsConnection connection,AQjmsSession session) throws JMSException,AQException {
Queue queue=session.getQueue("aqadm","wj_aqqueue");
BytesMessage message=session.createBytesMessage();
message.setJMSCorrelationID("fuck");
message.writeBytes("测试的一个入队消息".getBytes());
QueueSender sender = session.createSender(queue);
sender.send(queue,message);
}
最简单的办法是先在toad或sqlplus里测试OK后,再把它放到程序里
DECLARE
dequeue_options DBMS_AQ.dequeue_options_t;
message_properties DBMS_AQ.message_properties_t;
message_handle RAW(16);
message SYS.AQ$_JMS_BYTES_MESSAGE;
BEGIN
dequeue_options.navigation := DBMS_AQ.FIRST_MESSAGE;
DBMS_AQ.DEQUEUE(
queue_name => 'aqadm.wj_aqqueue',
dequeue_options => dequeue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
COMMIT;
DBMS_OUTPUT.PUT_LINE('message');
END;
/