我正在尝试将消息推送到IBM MQ但是在添加HostName,channel和Port等属性时,我在没有停止的情况下继续调试时遇到错误
项目已添加。键入字典:添加“主机名”键: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方法中,我正在推送我的消息。
答案 0 :(得分:2)
Yuk(并为将来的支持而头痛)。
首先,MQEnvironment类是一个静态类,只能用于超级简单程序。 IBM MQ最佳实践是使用HashTable。
其次,为什么不使用提供的MQ定义键名? (它将消除拼写错误)
第三,您需要查看MQ知识中心以获取' TRANSPORT_PROPERTY'的正确MQ .NET值。请参阅here。 MQ .NET有4个有效值:
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);
答案 1 :(得分:1)
看起来它已经ResultSet rs=stmt.executeQuery("select * from come2links.user_detailswhere uniquekeyfield='"+request.getParameter("recordId")+"';";
已经存在,它是strHost
。您需要将检查更改为:
"Hostname"
等