У меня нет четких знаний о MQ с использованием TOPICS, и я искал в документации IBM, и я не могу найти способ подписаться с помощью C++ на тему. Я видел, что в Java вы можете зайти в панель управления Websphere и настроить его там. Программно, как это можно сделать на С++? В С++ я подключался к очередям с помощью функций MQCONN, MQOPEN и для получения сообщений использую MQGET и MQPUT, но думаю, что подключаюсь только к очередям, а не к ТОПИКАМ. Я тоже хочу понять, правильно ли я понимаю, отличается ли подключение к теме от подключения к очереди. Заранее спасибо, ребята.
Рекомендуется использовать C MQ API при программировании на C++, поскольку классы C++ стабилизированы и не обновлялись (и не будут) классами для тем согласно Центр знаний IBM: Разработка приложений C++.
IBM WebSphere® MQ Version 7.0, enhancements to the IBM MQ programming interfaces are not applied to the C++ classes.
Чтобы использовать тему из C MQ API, вот краткий пример псевдокода. Также ознакомьтесь с образцами, предоставленными IBM, такими как amqspuba.c
и amqssuba.c
.
MQOD mqod {MQOD_DEFAULT};
MQCONN...
mqod.ObjectType = MQOT_TOPIC;
mqod.Version = MQOD_VERSION_4; /* To use ObjectString field */
mqod.ObjectString.VSPtr = argv[1];
mqod.ObjectString.VSLength = MQVS_NULL_TERMINATED;
MQOPEN(hConn,
&mqod,
MQOO_OUTPUT,
&hObj,
&CompCode, &Reason);
MQPUT....
MQSD mqsd {MQSD_DEFAULT};
MQCONN...
mqsd.Options = MQSO_CREATE | MQSO_NON_DURABLE | MQSO_MANAGED;
mqsd.ObjectString.VSPtr = argv[1];
mqsd.ObjectString.VSLength = MQVS_NULL_TERMINATED;
MQSUB(hConn,
&mqsd,
&hObj,
&hSub,
&CompCode, &Reason);
MQGET from hObj...
Пожалуйста, примите ответ Мораг, если он был полезен. Мораг, у вас есть ссылка на заявление о стабилизации от IBM, для какой версии это произошло? Я знаю, например, что классы IBM для Java были стабилизированы совсем недавно IBM v8.0 или v9.0.
Спасибо, Мораг, это как раз то, что я искал!
Мораг знаете ли вы, имеет ли значение, чтобы IBM не использовал термин стабилизированный по отношению к C++? В случае Java IBM KC заявляет: «IBM не будет вносить дальнейшие улучшения в классы IBM MQ для Java, и они функционально стабилизированы на уровне, поставляемом в IBM MQ версии 8.0». Я видел аналогичные утверждения для других функций.
Привет @JoshMc - Не уверен, что именно ты спрашиваешь. IBM заявила, что классы C++ также стабилизированы. На самом деле C++ был первым, стабилизированным во временных рамках V7.0. Отсюда и первая строка моего ответа. Почему вы говорите, что IBM не использует этот термин?
В ссылке KC не упоминается стабилизация.
Насколько я помню, в письме-анонсе (возможно, в том, в котором было объявлено о выпуске MQ V7.0) говорилось, что классы C++ стабилизированы. Конечно, в то время мы часто использовали этот термин в IBM Hursley. Я не знаю, почему этот термин не используется в KC, если он используется для классов Java. Возможно, во времена V7.0 этот термин не считался общеупотребительным, а в V8.0 он стал использоваться гораздо чаще, и авторы документации уловили это.
Спасибо Мораг за историю. Интересно узнать предысторию Ретта.
Спасибо, возможно, я неправильно выразил свой вопрос, но вы поняли мою точку зрения. Используйте MQ, разработанный IBM, для подписки и публикации в теме. Я не смог найти варианты, которые вы мне дали. Спасибо Мораг.