2

助けを借りて[リンク] 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;
        }
    }

例外キューをメッセージ プロパティに渡すにはどうすればよいですか??

4

1 に答える 1