Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用XMS写入远程IBM MQ队列_C#_.net_Ibm Mq_Xms - Fatal编程技术网

C# 使用XMS写入远程IBM MQ队列

C# 使用XMS写入远程IBM MQ队列,c#,.net,ibm-mq,xms,C#,.net,Ibm Mq,Xms,我正在尝试使用XMS 9.1版本将消息放到远程队列中。MQ服务器也已升级到9.1,但我的消息没有发送到远程服务器 var cf = factoryFactory.CreateConnectionFactory(); cf.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT); cf.SetStringProperty(XMSC.WMQ_HOST_NAME, _host); cf.SetIntProperty(XMSC.WMQ_P

我正在尝试使用XMS 9.1版本将消息放到
远程
队列中。MQ服务器也已升级到9.1,但我的消息没有发送到远程服务器

var cf = factoryFactory.CreateConnectionFactory();
cf.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT);
cf.SetStringProperty(XMSC.WMQ_HOST_NAME, _host);
cf.SetIntProperty(XMSC.WMQ_PORT, _port);
cf.SetStringProperty(XMSC.WMQ_CHANNEL, _channel);
cf.SetIntProperty(XMSC.WMQ_CLIENT_RECONNECT_OPTIONS, XMSC.WMQ_CLIENT_RECONNECT_Q_MGR);
cf.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, _managerName);

_connection = cf.CreateConnection();
_session = _connection.CreateSession(false, AcknowledgeMode.AutoAcknowledge);
用另一种方法

var queue = _session.CreateQueue(queueName);
var producer = _session.CreateProducer(queue);

var msg = _session.CreateTextMessage(message);
producer.Send(msg);
我找不到很多例子。
生产者
上是否有必须设置的属性才能写入远程队列


提前感谢。

在我的情况下,修复方法是设置WMQ\u目标\u客户端:

queue.SetIntProperty(XMSC.WMQ_TARGET_CLIENT, XMSC.WMQ_TARGET_DEST_MQ);

你收到了什么错误?没有。这是主要问题。我可以在WireShark中看到发送到服务器的消息。如果我手动将相同的消息放到队列中,它将发送到转发服务器。但是,在代码队列中编写它们并不是这样。您是否使用try/catch获取异常。请参阅此示例:您是否正在代码中执行
\u connection.Start()
?这两个都是。我正在捕获任何异常并启动连接。就像我上面提到的,我在WireShark中看到了发送到服务器A的消息。这很有趣,消息正在被接收,它们只是有RFH2头,这破坏了接收器。我想知道为什么您使用的带有v9.0 DLL的XMS没有发送RFH2头。我认为发送RFH2头始终是默认的,除非您实际关闭它,或者如果您有一个QALIAS,其中PROPCTL(无)指向您的QREMOTE,或者QLOCAL在接收端将其设置为NONE,或者SDR通道中有PROPCTL(无)。当您提到您连接的队列管理器也已升级时,它真的是一个定义了类似对象的新队列管理器吗?如果实际存在的qmgr已升级,则上述队列/通道属性不应丢失。否,它已升级。但我认为它以前是有效的,因为我们使用的是MQ.net客户端,而不是XMS客户端。我猜这是
props.Add(MQC.TRANSPORT\u属性,MQC.TRANSPORT\u MQSERIES\u MANAGED)正确设置标头?常规.net API不需要额外的努力就不会发送RFH2标头。RFH2头是JMS和XMS API的默认头。提供应用程序也发生了更改的详细信息,以及如何提供建议。