2015-07-08 2 views
0

Я пытаюсь нажать сообщение в IBM MQ, но при добавлении таких свойств, как HostName, channel и Port, я становлюсь ниже ошибки, когда я продолжаю отладку без остановкиТовар добавлен. Ключ в словаре: добавлен ключ «Hostname»: «Hostname» в C#

Товар добавлен. Ключ в словаре: добавлен ключ «Hostname»: «Hostname» в C#.

Я пытался проверить, как показано ниже,

if (!MQEnvironment.properties.ContainsKey(strHost) && !MQEnvironment.properties.ContainsKey(intPort) && !MQEnvironment.properties.ContainsKey(strChannel)) 
       { 

        MQEnvironment.properties.Add("Hostname", strHost); 
        MQEnvironment.properties.Add("Port", intPort); 
        MQEnvironment.properties.Add("Channel", strChannel); 
        MQEnvironment.properties.Add(MQC.TRANSPORT_PROPERTY,MQC.TRANSPORT_MQSERIES); 
       } 

выше код содержит в моем методе MQ PutMessage где я толкающей мое сообщение.

ответ

1

Похоже, что это не strHost, это уже есть, это "Hostname". Вы должны были бы изменить свою проверку, чтобы быть:

MQEnvironment.properties.ContainsKey("HostName") 

т.д.

+1

Это также относится к 'intPort' и' strChannel' –

2

Юк (и головная боль для будущей поддержки).

  • Прежде всего, класс MQEnvironment является статическим классом и должен ТОЛЬКО использоваться для супер простых программ. Лучшей практикой IBM MQ является использование HashTable.

  • Во-вторых, почему вы не используете предоставленные MQ для имен ключей? (он устранит опечатки)

  • В-третьих, вам необходимо ознакомиться с Центром знаний MQ для правильных значений MQ .NET для «TRANSPORT_PROPERTY». См. here. Есть 4 допустимых значений для MQ .NET:

MQC.TRANSPORT_MQSERIES_BINDINGS - подключение в качестве сервера MQC.TRANSPORT_MQSERIES_CLIENT - подключить как не XA клиент MQC.TRANSPORT_MQSERIES_XACLIENT - подключение в качестве XA клиента MQC.TRANSPORT_MQSERIES_MANAGED - подключить как не XA управляемый клиент

Вот правильный способ его код:

Hashtable qMgrProp = new Hashtable(); 
qMgrProp.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_CLIENT); 
qMgrProp.Add(MQC.HOST_NAME_PROPERTY, strHost); 
qMgrProp.Add(MQC.PORT_PROPERTY, intPort); 
qMgrProp.Add(MQC.CHANNEL_PROPERTY, strChannel); 

MQQueueManager qMgr = new MQQueueManager(qMgrName, qMgrProp); 
+0

Начиная с версии 7.1, клиент MQ .NET также поддерживает транзакцию XA в управляемом режиме. – Shashi

Смежные вопросы