Сообщение Websphere MQ не возвращается в очередь ввода
Есть сообщение в Websphere MQ. Прочитал сообщение, и я пытаюсь вернуть сообщение в очередь ввода. Порог повторной попытки еще не достигнут. Сообщение MQ автоматически помещается на вход Q при возникновении исключения? Это мой код:
MQQueueManager qm = new MQQueueManager("");
MQQueue q = qm.accessQueue("");
MQMessage message = new MQMessage();
q.get(message);
System.out.println("Retry Count"+ message.backoutCount);
throw new NullPointerException;
Будет ли приведенный выше код снова помещать сообщение в очередь ввода? В этом случае он не помещает сообщение обратно в очередь ввода. Сообщение потеряно.
1 ответ
Ваше сообщение может быть отозвано только в том случае, если оно было частью транзакции с самого начала. Ваш код не использует транзакции.
Взгляните на опции MQGMO, MQGMO_SYNCPOINT
а также MQGMO_SYNCPOINT_IF_PERSISTENT
(поиск строки MQGMO_SYNCPOINT
в приведенных ниже двух ссылках).
MQ Java Classes Константы CMQC
Описание MQ API MQGMO_SYNCPOINT - применимо ко всем языкам
А также методы commit() и backout() на MQQueueManager
:
и предлагаю вам прочитать это общее объяснение транзакций