1

我正在尝试使用 c# 连接到远程队列。我尝试了很多方法来连接到远程队列,但它总是失败并出现常见错误,例如:MQRC_CHANNEL_CONFIG_ERRORMQRC_HOST_NOT_AVAILABLE.

我正在做的是这样的:

        string channel = "QM_TEST.SVRCONN"; 
        string hostname = "<serverIp>"; 
        string queueName = "QM_TEST"; 
        string port = 1414; 

        props.Add(MQC.HOST_NAME_PROPERTY, hostname); 
        props.Add(MQC.CHANNEL_PROPERTY, channel); 
        props.Add(MQC.PORT_PROPERTY, port ); 
        props.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED); 

        MQQueueManager mqQueue = new MQQueueManager(queueName, props); 

我试过改变这个,但都失败了。

我认为我的问题是服务器配置..您能否指出如何配置服务器并使用 .net 连接到它的完整指南?

我的问题是使用 .net 连接到远程服务器而不是本地服务器。

谢谢!

4

2 回答 2

1

问题是客户端和服务器之间的 CCSID 不同。

http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=%2Fcom.ibm.mq.csqzaf.doc%2Fcs12480_.htm

在客户端我不得不把

Environment.SetEnvironmentVariable("MQCCSID", "437");

这就是为什么我得到:

MQRC_CHANNEL_CONFIG_ERROR 
于 2013-09-17T08:05:17.647 回答
0

我猜问题(或至少是一个问题)在这里:

MQQueue mqQueue = new MQQueueManager(queueName, props);

这应该是

queueManager = new MQQueueManager(queueManagerName, properties);

如果您已将 WebSphere MQ 客户端安装到默认位置,则以下目录下有许多示例程序:

C:\Program Files (x86)\IBM\WebSphere MQ\tools\dotnet\samples\cs\base\

那里有许多用于各种任务的示例程序。如果您安装了最新的 V7.1 客户端,那么您将看到以下程序:

SimpleAsyncPut
SimpleClientAutoReconnectGet
SimpleClientAutoReconnectPut
SimpleGet
SimpleMessageProperties
SimplePublish
SimplePut
SimpleReadAhead
SimpleSharingConversation
SimpleSubscribe
SimpleXAGet
SimpleXAPut

还有 WCF 和 XMS 示例。

如果您需要客户端代码,请在此处查看我对另一个 SO 问题的回复以获取链接。

更新:

这是正常的诊断过程。

  1. 如果 WMQ 组件是通过从其他地方重新定位库或类来安装的,请使用供应商提供的完整客户端媒体执行安装。这包括故障排除实用程序,例如 trace、dspmqver 等。它还解决了任何库或类不匹配问题。
  2. 使用预编译的客户端程序来测试连接。,amqsputc和程序需要这里描述amqsgetc的环境变量。SupportPac MA01的 Q 程序是单独下载的,但其优点是不需要任何环境变量、CCDT 文件或其他依赖项。amqsbcgcMQSERVER
  3. 如果示例程序失败,请检查 QMgr 的错误日志以[WMQ install]/qmgrs/[QMgr name]/errors/AMQERR01.LOG获取消息。还要检查 FDC 文件和[WMQ install]/errors.
  4. 如果 QMgr 端没有错误,请在使用此处此处所述的客户端跟踪时再次尝试连接。

大多数客户端问题都可以通过安装 IBM 提供的完整 WMQ 客户端来解决。(相反,这意味着大多数人是通过抓取 DLL 或 JAR 文件进行安装的。)如果问题仍然存在,QMgr 和客户端上的错误日志检查通常会揭示根本原因。如果这些不起作用,那么跟踪通常会诊断出剩余的问题。

更新 2:根据MQSeries.net 上发布
的错误消息,通道具有安全出口集。安全出口是通道在启动通道时调用的外部代码。如果无法访问出口的代码或文档,就无法知道出口期望或做什么。如果出口是内部编写的,您需要与程序员交谈以确定它需要什么。如果出口是商业产品,那么您将需要获取它的文档。

或者,更改通道以使其SCYEXIT为空白以禁用退出。

MQSeries.net 上发布的数据如下:

MQ9575: DCE Security: failed to get the user's login name.

EXPLANATION:

System call 192.168.50.55 to get the login name of the user running WebSphere
MQ client application process 5 failed with error value -1. This occurred in
security exit function create_cred. The exit will now attempt to open channel
using the DCE default login context.
ACTION:
If you wish to run using the DCE default login context take no action. If you
wish to run using the user's login name as the DCE security exit principal
examine the documentation for the operating system on which you are running MQ
clients and reconfigure the operating system as necessary to allow the
192.168.50.55 call to succeed. 

请注意,它表明调用在安全出口中失败。

于 2012-06-10T12:24:43.423 回答