2017-03-09 93 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」。