Nano Hash - криптовалюты, майнинг, программирование

получение имени очереди в PUT API Exit (MQ_PUT_EXIT)

В Put MQ API Exit (до или после) есть ли способ получить имя целевой очереди (т.е. очереди, для которой был вызван вызов "put").

Я попытался запросить параметр Hobj, но получил сообщение об ошибке, в котором говорилось, что объект не был открыт с опцией запроса (что является допустимой возможностью).

Я также проверил поле ResolvedQName параметра pPutMsgOpts, но оно было пустым.

Существуют ли какие-либо другие способы получения имени целевой очереди? Любая идея будет высоко оценена.

14.09.2012

Ответы:


1

Имена разрешенного администратора очередей и разрешенной очереди возвращаются в файле дескриптор объекта, доступный во время MQXR_AFTER вызов PUT1 или OPEN.

Взгляните на пример программы `amqsaxe0.c, и вы увидите следующие сигнатуры функций:

MQ_OPEN_EXIT OpenAfter;

void MQENTRY OpenAfter   ( PMQAXP    pExitParms
                         , PMQAXC    pExitContext
                         , PMQHCONN  pHconn
                         , PPMQOD    ppObjDesc
                         , PMQLONG   pOptions
                         , PPMQHOBJ  ppHobj
                         , PMQLONG   pCompCode
                         , PMQLONG   pReason
                         )


MQ_PUT1_EXIT Put1After;

void MQENTRY Put1After   ( PMQAXP    pExitParms
                         , PMQAXC    pExitContext
                         , PMQHCONN  pHconn
                         , PPMQOD    ppObjDesc
                         , PPMQMD    ppMsgDesc
                         , PPMQPMO   ppPut1MsgOpts
                         , PMQLONG   pBufferLength
                         , PPMQVOID  ppBuffer
                         , PMQLONG   pCompCode
                         , PMQLONG   pReason
                         )

Дескриптор объекта в вызове before имеет имя объекта, указанное приложением. Эта же структура в последующем вызове имеет имя QMgr и очереди, которые были разрешены во время вызова. Поскольку PUT1 выполняет открытие, размещение и закрытие за один шаг, он должен разрешать имя очереди. Однако в случае отдельных вызовов open, put(, put...), close разрешение имени происходит только один раз во время открытия.

См. образцы в /var/mqm/samp или C:\Program Files (x86)\IBM\WebSphere MQ\tools\c\Samples для программы amqsaxe0.c.

16.09.2012
  • Спасибо Роб за быстрый ответ. очень признателен! Однако я не уверен, как получить доступ к дескриптору объекта. Из подписи метода выхода PUT API видно, что доступен только дескриптор объекта (& Hobj), а не дескриптор объекта. MQ_PUT_EXIT (&ExitParms, &ExitContext, &Hconn, &Hobj, &pMsgDesc, &pPutMsgOpts, &BufferLength, &pBuffer, &CompCode, &Reason) 18.09.2012
  • Приношу свои извинения за краткий ответ. Я обновил его, надеюсь, с лучшим объяснением. 18.09.2012
  • Спасибо Роб! это было очень познавательно. Я пытался с выходом put в сценарии отдельных вызовов (open, put, close); и хотел ограничить put_exit одной очередью (среди многих очередей, присутствующих в QM). По умолчанию кажется, что зарегистрированный выход вызывается для всех очередей в QM. так что, если мы хотим ограничить put_exit одной очередью, как мы можем это сделать? есть ли корреляция между открытым и поставленным выходным вызовом? можем ли мы сравнить дескрипторы объектов и ожидать, что они будут одинаковыми? 18.09.2012
  • Я уверен, что вы можете это сделать, потому что SupportPac MA0W это делает. ;-) Я считаю, что вам нужно будет отслеживать открытые вызовы и сохранять дескрипторы интересующих объектов. Обратите внимание, что несколько открытий в одной и той же очереди вернут уникальные дескрипторы объекта. (Если бы это было не так, транзакции фиксировались бы во всех приложениях с открытой очередью, что было бы плохо!) Кстати, если вы еще не нашли MA0W, посмотрите. Это может спасти вас от написания собственного выхода. 18.09.2012
  • MA0W выглядит интересно, я попробую. хотя я намерен сделать больше, чем отслеживать. Поэтому я попробую ваше предложение сохранить дескрипторы интересующих объектов. Я вижу, что MA0W имеет функцию фильтрации, указав имя целевой очереди и имя процесса для трассировки. Еще раз большое спасибо! 18.09.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..