MQCMD_INQUIRE_Q_STATUS, PCF 命令returns "Unknown type" 异常
MQCMD_INQUIRE_Q_STATUS, PCF command returns "Unknown type" exception
我正在使用以下代码 returning 队列句柄,如果队列没有任何句柄(打开 input/output 计数将为 0)它 return MQRCCF_Q_STATUS_NOT_FOUND 但是当它有一些打开的句柄时,它 returns "Unknown type" 异常。
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 支持有限,因此它可能不支持某些参数。您尝试查询的参数可能不在支持的参数列表中。请注意 .NET 中的 MQ PCF 不受 IBM MQ 的官方支持。
如果您的目的是查询打开输入输出队列的应用程序数量,您可以使用INQUIRE_Q 命令并过滤掉input/output 计数。示例片段在这里:
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());
}
}
希望对您有所帮助
我正在使用以下代码 returning 队列句柄,如果队列没有任何句柄(打开 input/output 计数将为 0)它 return MQRCCF_Q_STATUS_NOT_FOUND 但是当它有一些打开的句柄时,它 returns "Unknown type" 异常。
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 支持有限,因此它可能不支持某些参数。您尝试查询的参数可能不在支持的参数列表中。请注意 .NET 中的 MQ PCF 不受 IBM MQ 的官方支持。
如果您的目的是查询打开输入输出队列的应用程序数量,您可以使用INQUIRE_Q 命令并过滤掉input/output 计数。示例片段在这里:
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());
}
}
希望对您有所帮助