Как принудительно удалить очередь на Qmanager с помощью команд PCF - PullRequest
0 голосов
/ 17 сентября 2018

В настоящее время я использую команду PCF для удаления очереди в QMANAGER с

PCFMessage message = new PCFMessage( CMQCFC.MQCMD_DELETE_Q );
message.addParameter( CMQC.MQCA_Q_NAME, name);
agent.send( message );

Могу ли я принудительно удалить, если очередь занята?


Я пытался без успеха на QL

@Override
protected PCFMessage getRequestRemove(String objetName,
        String qmanagerName,boolean forceQmanager) {
    PCFMessage request = new PCFMessage(CMQCFC.MQCMD_DELETE_Q);
        request.addParameter( CMQCFC.MQIACF_PURGE, CMQCFC.MQPO_YES );     

    request.addParameter(CMQC.MQCA_Q_NAME, objetName);
    request.addParameter(CMQC.MQIA_Q_TYPE, CMQC.MQQT_LOCAL);
    return request;
}

Код ошибки вызван: com.ibm.mq.pcf.PCFException: MQJE001: достижение кода «2», мотив «3014». Моя библиотека PCF: 7.1.0.4

1012 * привет *

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

В ответе Морага рассматриваются возможные способы отключения процессов, в которых в данный момент очередь открыта, если вы также хотите удалить очередь, когда сообщения находятся в очереди, вам нужно будет попросить MQ ОЧИСТИТЬ сообщения:

PCFMessage message = new PCFMessage( CMQCFC.MQCMD_DELETE_Q );
message.addParameter( CMQC.MQCA_Q_NAME, name);
message.addParameter( CMQCFC.MQIACF_PURGE, CMQCFC.MQPO_YES );
agent.send( message );
0 голосов
/ 18 сентября 2018

В команде очереди DELETE нет опции FORCE. Если очередь в настоящее время открыта приложением для ввода, и они ожидают в MQGET, вы можете удалить их с помощью следующей команды.

MQSC

ALTER QLOCAL(q-name) GET(DISABLED)

PCF

PCFMessage message = new PCFMessage (CMQCFC.MQCMD_CHANGE_Q);
message.addParameter(CMQC.MQCA_Q_NAME, name);
message.addParameter(CMQC.MQIA_INHIBIT_GET, CMQC.MQQA_GET_INHIBITED);
agent.send(message);

Однако, если очередь в данный момент открыта, а приложение в данный момент не находится ни в MQGET, ни в MQPUT, то вы не можете удалить их таким образом, тогда вам остается только найти нужное приложение, используя DISPLAY CONN, а затем введите STOP CONN, чтобы заставить их освободить очередь.

Наиболее вероятным занятием очереди является длинный MQGET-официант, поэтому приведенная выше примерная команда поможет в большинстве случаев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...