MQQueueSession.rollback()を使用して作業単位をロールバックしています。メッセージはBACKOUTキューに移動されます。これで問題ありません。
問題は、これらのメッセージをバックアウトキューでどのように処理するかです。runmqdlqツールを使用できることを読みましたが、MQDLHで始まるメッセージでのみ機能します。単純なMQQueueSession.rollback()はそれを行っていないようです。私は何が間違っているのですか?
コードサンプル:
MQQueueConnection connection;
// ...
MQQueueSession session = (MQQueueSession) connection.createQueueSession(true, Session.SESSION_TRANSACTED);
MQQueue queue = (MQQueue) session.createQueue("queue:///TEST");
MQQueueReceiver receiver = (MQQueueReceiver) session.createReceiver(queue);
JMSTextMessage message = null;
try {
message = (JMSTextMessage) receiver.receive();
// ...
session.commit();
} catch (JMSException e) {
session.rollback();
e.printStackTrace();
}