2012 MQRC_ENVIRONMENT_ERROR с использованием классов IBM MQ для C++

Я использую распространяемые библиотеки IBM MQ (версия 9.3.0.16) для Linux для настройки канала связи между диспетчером очередей и моим примером приложения C++. Моя цель — асинхронно получать сообщения из очереди. Я могу прочитать сообщение синхронно, используя блокирующий вызов get() (внутри цикла while), что ограничивает производительность и скорость. Поэтому мне нужно использовать асинхронные способы чтения сообщения. Согласно моим исследованиям, я не нашел в классах C++ прямых функций для асинхронного чтения сообщений или определения обратного вызова. Однако я обнаружил, что есть способ добиться этого, используя метод на основе C. Я нашел утилиту, которая, как говорят, решает ту же задачу. Я скомпилировал его, но когда я его выполнил, я получил ошибку при регистрации обратного вызова с использованием вызова функции MQCB(), как показано ниже: MQCB ended with reason code: 2012

Согласно утилите и

Ниже приведен URL-адрес содержимого, содержащего код .c, который я запускаю: Ссылка на код

К вашему сведению, диспетчер очередей работает в Docker-контейнере, который я запустил и запустил, используя следующий URL-адрес: Менеджер очередей

У меня закончились идеи, и мне нужна помощь.

Я попытался изменить параметр «Общее соединение», но это не сработало. Я все еще получаю ту же ошибку.

Является ли ваше приложение многопоточным?

Morag Hughson 30.06.2024 13:43

В коде приложения я не вижу использования ни потоков, ни библиотеки pthread. Можно предположить, что это не многопоточное приложение. Для его компиляции я использую команду ниже: gcc src2.c -o src2 -I/home/oa/projects/mq/cpp_test_app/inc -L/home/oa/projects/mq/cpp_test_app/lib64 -limqc23gl -limqb23gl -lmqic ... Вы предлагаете мне добавить что-то вроде lpthread в приведенную выше команду gcc?

Ubaid Ashraf 30.06.2024 14:14
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно скомпилировать с резьбовыми опциями. В частности ссылка на _r версии библиотек MQ. Например cc -o myprog myprog.c -L/opt/mqm/lib64 -I/opt/mqm/inc -lmqm_r

Если вы этого не сделаете, вы обычно получите либо 2012 (при работе в режиме клиента), либо 2488 (при работе в режиме локальных привязок).

Большой! Ваше предложение сработало. Я решил проблему, предоставив библиотеки и добавив варианты _r в команду GCC.

Ubaid Ashraf 01.07.2024 16:46

Другие вопросы по теме

IntelliJ меняет спецификацию шифрования после того, как я установил ее в свойствах
Какие дополнительные действия необходимы для устранения ошибки MQRC_NOT_AUTHORIZED
Как определить исходящую очередь в примере программы IBM mq от codeengine
Как я могу добавить этому пользователю разрешение на размещение сообщений в диспетчере очередей из приложения JMS?
Проблема подключения JNDI с mq-jms-spring-boot-starter
CWWKS1100A: Не удалось выполнить аутентификацию для администратора с идентификатором пользователя. Указан неверный идентификатор пользователя или пароль
Поместите свойства сообщения JMS в очередь IBM MQ и получите доступ к ним из другого клиента JMS, работающего на платформе Websphere Freedom
MQRC_Q_MGR_NAME_ERROR
Запустите маршрут Apache Camel из другого приложения весенней загрузки
Как получить сообщение IBM MQ по идентификатору сообщения с помощью bash? есть ли в наличии инструмент?

Похожие вопросы

Ошибка C2679: двоичный '<<': не найден оператор, принимающий правый операнд типа 'main::<lambda_1>' (или нет приемлемого преобразования)
Android NDK: ошибка компиляции с std::execution в C++17
Использование std::enable_if во избежание неоднозначной перегрузки шаблонных бинарных операторов
Законно ли инициализировать массив через функтор, который принимает сам массив в качестве параметра по ссылке?
Как эффективно использовать std::variant для обработки ошибок в C++?
Является ли доступ к глобальной «статической» переменной из одного TU гарантированно безопасным?
«Процесс завершен с кодом завершения -1073740791 (0xC0000409)» при использовании вектора будущего
Как исправить «Указанный тип не соответствует требованиям Cpp17MoveInsertable»?
Возврат необязательного параметра из шаблонной функции преобразования
Карта C++: как получить ключ, который использовался для добавления элемента в std::map?