我正在尝试使用c#连接到远程队列。
我尝试了很多方法来连接到远程队列,但总是遇到常见错误,例如:MQRC_CHANNEL_CONFIG_ERROR
或MQRC_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而不是本地服务器连接到REMOTE服务器。
谢谢!
答案 0 :(得分: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样本。
如果您需要客户端代码,请参阅我对另一个问题here的回复以获取链接。
更新:
这是正常的诊断过程。
amqsputc
,amqsgetc
和amqsbcgc
计划需要MQSERVER
环境变量as described here。来自SupportPac MA01的Q程序是单独下载的,但其优点是不需要任何环境变量,CCDT文件或其他依赖项。[WMQ install]/qmgrs/[QMgr name]/errors/AMQERR01.LOG
处的QMgr错误日志以获取消息。还要检查[WMQ install]/errors
。大多数客户端问题都是通过安装IBM提供的完整WMQ客户端来解决的。 (相反,这意味着大多数人都是通过抓取DLL或JAR文件进行安装。)如果问题仍然存在,QMgr和客户端的错误日志检查通常会揭示根本原因。如果这些不起作用,那么跟踪通常会诊断剩余的问题。
更新2:
根据错误消息posted at 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.
请注意,它说明安全出口呼叫失败。
答案 1 :(得分:0)
问题是客户端和服务器之间的CCSID不同。
在客户端我不得不放
Environment.SetEnvironmentVariable("MQCCSID", "437");
这就是我得到的原因:
MQRC_CHANNEL_CONFIG_ERROR