当我尝试从队列管理器获取队列名称时,出现此错误,我无法理解原因
PCFMessage reqeuestMessage = new PCFMessage(MQC.MQCMD_INQUIRE_Q);
reqeuestMessage.AddParameter(MQC.MQIA_Q_TYPE, MQC.MQQT_LOCAL);
PCFMessage[] pcfResponse = messageAgent.Send(reqeuestMessage);
最佳答案
IBM 已声明 .NET 的 MQ 类中包含的 PCF 支持未记录或维护。如需引用,请参阅 IBM MQ Development 的 Mark Taylor 的 MQ 技术 session v2.0.1.5 演示文稿“PCF Programming”的第 16 页:
- Some use .Net classes: that interface is not documented or maintained
- An historic accident
- Missing newer function such as z/OS and byte string support
我验证了 .NET 的 MQ 类的 PCF 接口(interface)仍然没有记录在 IBM MQ 知识中心中,但有趣的是他们最近在该领域采取了一些 APAR 并解决了它们:
- IT02687: DOTNET APPLICATION SENDING PCF MESSAGES GET NO RESPONSE WHEN REQUESTS ARE SENT TO A Z/OS QUEUE MANAGER - 2014 年 8 月 - 在 7.5.0.5 中修复
- IT12297: THE MQ .NET CLASSES FAIL TO INITIALIZE AN MQCFSL STRUCTURE WHEN PROCESSING A PCF RESPONSE - 2016 年 5 月 - 在 7.5.0.7/8.0.0.5 中修复
Microsoft Developer All About Interop 博客文章“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 对 Stack Overflow 问题“MQ Statistics Monitoring from C#/.NET”的回答。
关于c# - .Net IBM MQ 错误 "MQRCCF_CFIN_PARM_ID_ERROR"3014,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42686321/