В чем разница между использованием команды clear и вызова mqget api для очистки очереди? - PullRequest
2 голосов
/ 02 декабря 2011

При очистке очереди в WebSphere MQ, в чем разница между использованием команды clear и вызова API mqget?

Ответы [ 2 ]

5 голосов
/ 02 декабря 2011

Команда CLEAR выдает одну команду, которая очищает очередь, в то время как Очистка с использованием команды MQGET считывает очередь до тех пор, пока она не станет пустой.

Практически можно очистить с помощью MQGET без необходимости устанавливать эксклюзивную блокировку в очереди. С другой стороны, если очередь где-то используется, команда CLEAR не будет выполнена.

Документация IBM перечисляет разницу следующим образом:

  • Если вы используете команду CLEAR, все сообщения удаляются из очереди. Однако, если очередь уже открыта исключительно другим приложением или если очередь содержит неподтвержденные сообщения, команда немедленно завершается сбоем, и ни одно из сообщений не очищается.
  • Если вы используете вызов API MQGET, сообщения поступают из очереди до тех пор, пока сообщения не станут доступными. Тем не менее, MQGET не распознает незафиксированные сообщения, что означает, что в очереди все еще могут быть незафиксированные сообщения. Кроме того, команда может завершиться ошибкой, если очередь уже открыта исключительно другим приложением.
1 голос
/ 02 декабря 2011

Я только что проверил, что команда CLEAR также уменьшает размер файла очереди до размера любой пустой очереди.

С Clear QL WMQ также удаляет файл очереди и создает его заново.Обычно размер файла очереди не уменьшается до тех пор, пока через некоторое время файловое пространство не используется.

Я помню, что приходилось делать это, когда у нас была очередь, заполняющая диск.вместо того, чтобы обрабатывать сообщения, мы ОЧИЩАЛИ очередь, чтобы одновременно освободить место на диске.

...