2017-03-09 96 views
2

当我尝试从队列管理器获得队列名称,我得到这个错误,我不明白为什么净IBM MQ错误“MQRCCF_CFIN_PARM_ID_ERROR” 3014

PCFMessage reqeuestMessage = new PCFMessage(MQC.MQCMD_INQUIRE_Q); 
reqeuestMessage.AddParameter(MQC.MQIA_Q_TYPE, MQC.MQQT_LOCAL); 
PCFMessage[] pcfResponse = messageAgent.Send(reqeuestMessage); 
+0

你解决了你的问题吗? – JoshMc

回答

0

哪里队列名称参数?

PCFMessage reqeuestMessage = new PCFMessage(MQC.MQCMD_INQUIRE_Q); 
reqeuestMessage.AddParameter(MQC.MQCA_Q_NAME, "*"); 
reqeuestMessage.AddParameter(MQC.MQIA_Q_TYPE, MQC.MQQT_LOCAL); 
reqeuestMessage.AddParameter(MQCFC.MQIACF_Q_ATTRS, 
          new int [] { MQC.MQCA_Q_NAME, 
              MQC.MQIA_Q_TYPE, 
              MQC.MQIA_CURRENT_Q_DEPTH, 
              MQC.MQIA_OPEN_INPUT_COUNT, 
              MQC.MQIA_OPEN_OUTPUT_COUNT }); 
PCFMessage[] pcfResponse = messageAgent.Send(reqeuestMessage); 

您需要列出您要求的内容以及您希望从请求返回的内容。

有很多C#.NET PCF示例,但有数百或数千个Java PCF示例。只需在Java PCF代码之后为您的C#.NET代码建模即可。

2

IBM声明,包含在MQ Classes for .NET中的PCF支持没有记录或维护。作为参考看看MQ技术大会v2.0.1.5呈现“PCF Programming”由IBM MQ发展的马克·泰勒的第16页:

  • 一些使用.NET类:该接口是不是记录保持
    • 一个历史性事故
    • 缺少新的功能,如z/OS和字节字符串支持

我验证了MQ类.NET的PCF界面仍然没有在IBM MQ知识中心记录在案,但令人感兴趣的是,他们有参加这几个的APAR最近面积并解决他们:


微软开发所有关于互操作的博客文章“PCF with IBM’s MQ Classes for .NET”有一些例子,你可能需要使用MQCMD_INQUIRE_Q_NAMES而不是MQC.MQCMD_INQUIRE_Q。从博客:

PCFMessageAgent agent = new PCFMessageAgent(c.MQ_QueueManager); 
PCFMessage request= new PCFMessage(CMQCFC.MQCMD_INQUIRE_Q_NAMES); 
request.AddParameter (MQC.MQCA_Q_NAME, queuename); 
request.AddParameter (MQC.MQIA_Q_TYPE, MQC.MQQT_LOCAL); 
PCFMessage[] responses = agent.Send(request); 

又如@ Sashi的回答堆栈溢出问题 “MQ Statistics Monitoring from C#/.NET”。