WebsphereMQ с .Net Core 2.2 - PullRequest
       31

WebsphereMQ с .Net Core 2.2

1 голос
/ 19 марта 2019

Я пытаюсь подключиться к очереди WebsphereMQ, используя .Net Core 2.2.Я действительно запутался в том, как это сделать.Я хотел бы получить некоторые пояснения, прежде чем показывать, что я пытаюсь (и терпит неудачу):

  • Какую библиотеку я должен использовать и как ее получить?(NMS? AMQP? WebsphereClient?)
    • Я видел несколько примеров, которые, по-видимому, используют некоторые библиотеки DLL, которые появляются при установке WebsphereMQ (???).Это верно?Нужно ли устанавливать WebsphereMQ?(сейчас он у меня на удаленном сервере, который я могу подключить к нужной мне очереди).

До сих пор я пытался установить WebSphereMQClient и пытается подключиться к очереди с помощью следующего кода:

    public void StartListener()
    {
        try
        {
            var xff = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
            var cf = xff.CreateConnectionFactory();
            cf.SetStringProperty(XMSC.WMQ_HOST_NAME, WebsphereMqHost);
            cf.SetIntProperty(XMSC.WMQ_PORT, WebsphereMqPort);
            cf.SetStringProperty(XMSC.WMQ_CHANNEL, WebsphereMqChannel);
            cf.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, WebsphereMqQueueManager);
            cf.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT);

            var conn = cf.CreateConnection();
            var sess = conn.CreateSession(false, AcknowledgeMode.AutoAcknowledge);
            var queue = sess.CreateQueue(QueueName);
            var consumer = sess.CreateConsumer(queue);

            consumer.MessageListener = OnWebsphereMsg;

            conn.Start();
        }
        catch (Exception e)
        {
            _logger.LogError(e);
        }
    }

Но я получаю исключение в первой строке:

System.Exception: Fatal error. Failed to initialize XMSFactoryFactory ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeInitializationException: The type initializer for 'IBM.XMS.Client.Impl.XmsFactoryFactoryImpl' threw an exception. ---> System.TypeInitializationException: The type initializer for 'IBM.XMS.Util.Tr' threw an exception. ---> System.TypeInitializationException: The type initializer for 'IBM.XMS.Util.ConfigMgr' threw an exception. ---> System.MissingMethodException: Method not found: 'System.AppDomainSetup System.AppDomain.get_SetupInformation()'.
   at IBM.XMS.Util.ConfigMgr..cctor()
   --- End of inner exception stack trace ---
   at IBM.XMS.Util.Tr.ResolveTraceSpec()
   at IBM.XMS.Util.Tr.LoadTraceConfig()
   at IBM.XMS.Util.Tr..cctor()
   --- End of inner exception stack trace ---
   at IBM.XMS.Util.Tr.Register(Type aClass, String group, String resourceBundleName)
   at IBM.XMS.Client.Impl.XmsFactoryFactoryImpl..cctor()
   --- End of inner exception stack trace ---
   at IBM.XMS.Client.Impl.XmsFactoryFactoryImpl.GetClientFactory(Int32 connectionType)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at IBM.XMS.XMSFactoryFactory.GetXmsFactory(Int32 connectionType)
   --- End of inner exception stack trace ---
   at IBM.XMS.XMSFactoryFactory.GetXmsFactory(Int32 connectionType)
   at IBM.XMS.XMSFactoryFactory.GetInstance(Int32 connectionType)
   at MyApp.Integrations.Configurations.WebsphereMqIntegrationsManager.StartListener(ListenersEnum listener, Dictionary`2 parameters).

Я заметил, что WebsphereMqClient несоответствует стандарту .NET.Это ошибка вызвана из-за этого?Как я могу подключиться к Websphere с помощью моего приложения .NET Core?

Спасибо,

1 Ответ

1 голос
/ 20 марта 2019

amqmxmsstd.dll - это библиотека, которая должна использоваться, и она доступна из MQ v9.1.1. Ниже приведена ссылка на информационный центр, в которой рассказывается об использовании XMS с Microsoft .NET Core. Использование XMS с Microsoft .NET Core

Для разработки приложений XMS .NET вам понадобятся и amqmdnetstd.dll, и amqmxmsstd.dll, и обе эти библиотеки построены с использованием .NET Standard. Следующая ссылка на информационный центр рассказывает об инфраструктуре, используемой для создания этих библиотек. Установка классов IBM MQ для .NET Standard

Как указал Джош, вы можете использовать клиент MQ Redist для получения библиотек. Загрузите "9.1.1.0-IBM-MQC-Redist-Win64" с клиентов IBM MQ Redist

...