在帮助下 [链接]如何在使用 Java 提交时在 Oracle AQ 表上排队并使用 JMS 客户端使用我正在尝试实现这一点 -
declare
msg SYS.AQ$_JMS_TEXT_MESSAGE;
queue_options DBMS_AQ.ENQUEUE_OPTIONS_T;
msg_props DBMS_AQ.MESSAGE_PROPERTIES_T;
msg_id RAW(16);
begin
msg_props.expiration := 12;
msg_props.exception_queue := 'EVT_QUEUE_E';
msg := SYS.AQ$_JMS_TEXT_MESSAGE.CONSTRUCT();
msg.set_text('Hello World from PL/SQL Count 5');
DBMS_AQ.ENQUEUE( queue_name => 'EVT_QUEUE'
, enqueue_options => queue_options
, message_properties => msg_props
, payload => msg
, msgid => msg_id);
commit;
end;
这是使用默认消息属性将消息排入队列的函数。
public static void sendMessage(String user, String queueName, String message) throws SQLException
{
try
{
QueueConnection qCon = getConnection();
session = qCon.createQueueSession(false, Session.CLIENT_ACKNOWLEDGE);
qCon.start();
Queue queue = ((AQjmsSession) session).getQueue(user, queueName);
MessageProducer producer = session.createProducer(queue);
//AQMessage
TextMessage msg = session.createTextMessage(message);
producer.setTimeToLive(1); //expiration time
producer.send(msg);
System.out.println("Sent message = " + msg.getText());
session.close();
producer.close();
qCon.close();
}
catch (JMSException e)
{
e.printStackTrace();
return;
}
}
如何将异常队列传递给消息属性?