#jms #ibm-mq #spring-jms
Вопрос:
У меня возникают проблемы с аутентификацией, когда модуль пытается подключиться к IBM mq. Ошибка, которую я получаю на уровне модуля, заключается в:
Таким образом, у нас есть файл config.yaml, в котором указывается, какой канал и какого пользователя использовать для подключения с определенного env. У нас есть dev, prod env. Prod env работает правильно, однако dev env выдает вышеуказанную ошибку. Однако у нас также есть файл docker ibm-mq, в котором пользователь y создается в базовом образе. Это отдельно от файла config.json. Таким образом, он принимает пользователя в файле dockerfile, а не пользователя в файле config.yaml. Поэтому я хочу использовать промежуточного пользователя, который упоминается в файле config.yml и имеет все разрешения, но он использует пользователя в базовом образе docker.
конфигурация.yml
ibm: mq: connName: x.x.x.x(1414) queueManager: x channel: x.x user: staging
Файл Docker
User y created in base image USER 7676 ENTRYPOINT ["/entrypoint.sh"] CMD ["./app.jar"]
Сведения об авторах connauth и qmgr приведены ниже:
AMQ8408: Display Queue Manager details. QMNAME(x) CONNAUTH(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) DIS AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) 2 : DIS AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AMQ8566: Display authentication information details. AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) ADOPTCTX(NO) DESCR( ) CHCKCLNT(REQDADM) CHCKLOCL(OPTIONAL) FAILDLAY(1) ALTDATE(2015-09-22) ALTTIME(19.45.35)
nested exception is com.ibm.mq.MQException: JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED').","context":"default","module":"app"} {"timestamp":"2021-12-01 17:05:14.370","level":"ERROR","thread":"DefaultMessageListenerContainer-1","logger":"org.springframework.jms.listener.DefaultMessageListenerContainer","message":"Could not refresh JMS Connection for destination 'K' - retrying using FixedBackOff{interval=5000, currentAttempts=202648, maxAttempts=unlimited}. Cause: JMSWMQ2013: The security authentication was not valid that was supplied for QueueManager 'x' with connection mode 'Client' and host name '....'.; nested exception is com.ibm.mq.MQException: JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED').","context":"default","module":"app"}
Ошибка, которую я вижу в диспетчере очередей, заключается в следующем:
AMQ9557: Queue Manager User ID initialization failed for 'y'. EXPLANATION: The call to initialize the User ID 'y' failed with CompCode 2 and Reason 2035. ACTION: Correct the error and try again. ----- cmqxrsrv.c : 2282 ------------------------------------------------------- 12/01/2021 04:40:45 PM - Process(1388.82388) User(mqm) Program(amqrmppa) Host(....)Installation(Installation1) VRMF(8.0.0.2) QMgr(Y)
Комментарии:
1. Существует ли Y на сервере MQ? Если он не существует, ожидается эта ошибка. Какая версия MQ находится на вашем сервере?
2. Есть ли какие-либо связанные сообщения непосредственно перед
AMQ9557
вAMQERR01.LOG
? Иногда эта ошибка возникает в результате предыдущих ошибок. Если нет, смотрите комментарий @JoshMc.3. @мораг есть много предупреждений о том, что он не может добраться до определенного секрета. Возможно, это может быть причиной, но для вышеупомянутой ошибки есть дополнительная информация о том, что причиной ее является процесс amqrmppa. Установка 1-это то, что вызывает это.
4. @JoshMc да, я верю, что y существует на сервере mq. Но чтобы быть вдвойне уверенным, не могли бы вы, пожалуйста, сообщить мне, как проверить, существует ли y на сервере?
5. Если это сервер Unix или Linux, просто запустите
id y
. Я думаю, что будет полезно, если вы отредактируете свой вопрос и предоставите все связанные с ним ошибки администратора очередей в полном объеме. Предоставления нам только amqrmppa и Установки1 достаточно, чтобы устранить проблему.