.Net IBM MQ 错误 "MQRCCF_CFIN_PARM_ID_ERROR" 3014
.Net IBM MQ Error "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);
队列名称参数在哪里?
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 代码建模。
IBM 声明未记录或维护 MQ 类 for .NET 中包含的 PCF 支持。有关参考,请参阅 IBM MQ Development 的 Mark Taylor 的 MQ 技术会议 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 接口仍然没有记录在 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 博客 post“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”的回答。
当我尝试从队列管理器获取队列名称时,出现了这个错误,我不明白为什么
PCFMessage reqeuestMessage = new PCFMessage(MQC.MQCMD_INQUIRE_Q);
reqeuestMessage.AddParameter(MQC.MQIA_Q_TYPE, MQC.MQQT_LOCAL);
PCFMessage[] pcfResponse = messageAgent.Send(reqeuestMessage);
队列名称参数在哪里?
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 代码建模。
IBM 声明未记录或维护 MQ 类 for .NET 中包含的 PCF 支持。有关参考,请参阅 IBM MQ Development 的 Mark Taylor 的 MQ 技术会议 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 接口仍然没有记录在 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 博客 post“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”的回答。