C# MQCMD_INQUIRE_Q_状态,PCF命令返回";“未知类型”;例外
我使用以下代码返回队列的句柄,如果队列没有任何句柄(打开的输入/输出计数将为0),它将返回MQRCCF_Q_STATUS_not_FOUND,但当它有一些打开的句柄时,它将返回“未知类型”异常C# MQCMD_INQUIRE_Q_状态,PCF命令返回";“未知类型”;例外,c#,ibm-mq,pcf,C#,Ibm Mq,Pcf,我使用以下代码返回队列的句柄,如果队列没有任何句柄(打开的输入/输出计数将为0),它将返回MQRCCF_Q_STATUS_not_FOUND,但当它有一些打开的句柄时,它将返回“未知类型”异常 public void getQueue(string Name) { PCFMessage reqeuestMessage = new PCFMessage(MQC.MQCMD_INQUIRE_Q_STATUS); reqeuestMess
public void getQueue(string Name)
{
PCFMessage reqeuestMessage = new PCFMessage(MQC.MQCMD_INQUIRE_Q_STATUS);
reqeuestMessage.AddParameter(MQC.MQCA_Q_NAME, Name);
reqeuestMessage.AddParameter(CMQCFC.MQIACF_Q_STATUS_TYPE, CMQCFC.MQIACF_Q_HANDLE);
PCFMessage[] response = agent.Send(reqeuestMessage);
foreach (PCFMessage st in response)
{
...
}
}
C#中的MQ PCF支持有限,因此可能不支持某些参数。您试图查询的参数可能不在支持的参数列表中。请注意,IBM MQ不正式支持.NET中的MQ PCF
如果要查询已打开输入和输出队列的应用程序的数量,可以使用inquire_Q命令并过滤掉输入/输出计数。示例代码段如下所示:
PCFMessage reqeuestMessage = new PCFMessage(MQC.MQCMD_INQUIRE_Q);
reqeuestMessage.AddParameter(MQC.MQCA_Q_NAME, "Q1");
// Send request and receive response
PCFMessage[] pcfResponse = messageAgent.Send(reqeuestMessage);
// Process and print response.
int pcfResponseLen = pcfResponse.Length;
for (int pcfResponseIdx = 0; pcfResponseIdx < pcfResponseLen; pcfResponseIdx++)
{
PCFParameter[] parameters = pcfResponse[pcfResponseIdx].GetParameters();
foreach (PCFParameter pm in parameters)
{
// We just want to print current queue depth only
if ((pm.Parameter == MQC.MQIA_OPEN_OUTPUT_COUNT) || (pm.Parameter == MQC.MQIA_OPEN_INPUT_COUNT))
Console.WriteLine("Parameter: " + pm.Parameter + " - Value: " + pm.GetValue());
}
}
PCFMessage requeestmessage=新的PCFMessage(MQC.MQCMD\u INQUIRE\u Q);
RequeTestMessage.AddParameter(MQC.MQCA_Q_名称,“Q1”);
//发送请求和接收响应
PCFMessage[]pcfResponse=messageAgent.Send(请求消息);
//处理和打印响应。
int pcfResponseLen=pcfResponse.Length;
对于(int-pcfResponseIdx=0;pcfResponseIdx
希望这有帮助谢谢,不,我得到了输入计数。我想知道现在连接到队列的句柄(应用程序)“请注意,IBM MQ不正式支持MQ PCF。”Shashi,我不同意这一点。国际商用机器公司也许您想将其限定为“PCF在.Net中不受支持”或类似的内容?