прием и отправка сообщений на сервер mqseries из ядра .net - PullRequest
0 голосов
/ 06 февраля 2019

я хотел бы подключиться к серверу mqseries с этой информацией

  1. имя очереди: "myqueue"
  2. имя подключения: "myconnectionName"
  3. клиентский канал: "mychannel"
  4. имя сервера: "myServerName"

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

Невозможно загрузить DLL 'mqic32.dll' или одну из его зависимостей: Указанный модуль не можетбыть найденным.(Исключение из HRESULT: 0x8007007E) '

        static MQQueueManager queueManager;
        static MQQueueManager qManager;
        static MQQueue queue;
        MQMessage queueMessage;
        MQGetMessageOptions queueGetMessageOptions;
        MQPutMessageOptions queuePutMessageOptions;
        static string QueueName;
        static void Main(string[] args)
        {
          Connect();
        }
         static void Connect()
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("AppSettings.json", true, true).Build();

            // Read the Mqseries "connection string" from App.config file.
            var queueManagerName = builder["queueManagerName"];
            var MQChannel = builder["MQChannel"];
            var  queueName = builder["QueueName"];
            string connectionName = builder["ConnectionName"];
            MQAccess(queueName, "Default", connectionName, MQChannel);
            Console.WriteLine("Connected to MQ Queue Manager");
        }
        public static void MQAccess(string queueName, string queueManager, string connection, string channel)
        {
            QueueName = queueName;

            qManager = new MQQueueManager(queueManager, channel, connection);

            queue = qManager.AccessQueue(QueueName, MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_FAIL_IF_QUIESCING);
        }

1 Ответ

0 голосов
/ 07 февраля 2019

Поддержка ядра .NET была добавлена ​​в MQ v9.1.1.Опять же, как сказал @JasonE, вам нужно использовать только управляемый режим MQ .NET.

Пример кода:

Hashtable properties;
MQQueueManager queueManager = null;
try {
    properties = new Hashtable();
    properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);
    properties.Add(MQC.HOST_NAME_PROPERTY, hostName);
    properties.Add(MQC.PORT_PROPERTY, port);
    properties.Add(MQC.CHANNEL_PROPERTY, channelName);
    properties.Add(MQC.USER_ID_PROPERTY, userName);
    properties.Add(MQC.PASSWORD_PROPERTY, pwd);

    MQQueueManager queueManager = new MQQueueManager(queueManagerName, properties);

}catch(MQException mqex) {
 // Console out exception
}
...