一个我们贸易MQ数据的厂商都有监视器,显示如下:
我写我自己的C#监视器需要每隔x分钟的队列深度的快照,但我想知道如何让排队和出队的消息的数量。 这两个统计数据似乎对我来说具有不同的性质。 对我来说,队列深度是在给定的时间点。 上述报告是真正展示“高Q深度”为5分钟的时间。
有人点我到C#/。NET MQ API这些如何统计手册中的东西可以收集? 如果不是,有什么诀窍或工具可能能够得到这些统计数据?
一个我们贸易MQ数据的厂商都有监视器,显示如下:
我写我自己的C#监视器需要每隔x分钟的队列深度的快照,但我想知道如何让排队和出队的消息的数量。 这两个统计数据似乎对我来说具有不同的性质。 对我来说,队列深度是在给定的时间点。 上述报告是真正展示“高Q深度”为5分钟的时间。
有人点我到C#/。NET MQ API这些如何统计手册中的东西可以收集? 如果不是,有什么诀窍或工具可能能够得到这些统计数据?
MQ .NET已经为无证PCF下的“支持” IBM.WMQ.PCF
命名空间。 有喜欢类PCFAgent, PCFMessage
等。 这些可以被用来读取PCF消息。
对于静态监控,可以在队列打开“队列静”。 如所描述的在这里队列静力学消息包括像放或从队列中检索的邮件的数量的信息。
示例代码:此代码查询队列管理器与名Q1的队列。
public void InquireQmgr()
{
try
{
PCFMessageAgent messageAgent = new PCFMessageAgent("QM");
PCFMessage pcfMsg = new PCFMessage(MQC.MQCMD_INQUIRE_Q);
pcfMsg.AddParameter(MQC.MQCA_Q_NAME, "Q1");
PCFMessage[] pcfResponse = messageAgent.Send(pcfMsg);
int pcfResponseLen = pcfResponse.Length;
for (int pcfResponseIdx = 0; pcfResponseIdx < pcfResponseLen; pcfResponseIdx++)
{
PCFParameter [] parameters = pcfResponse[pcfResponseIdx].GetParameters();
foreach(PCFParameter pm in parameters)
{
Console.WriteLine(pm.Parameter + " - " + pm.GetValue());
}
}
messageAgent.Disconnect();
}
catch(MQException ex)
{
Console.Write(ex);
}
}
您所看到的显示使用(名为很差) 重置队列统计 PCF命令。 我将此称为WMQ的“量子命令”,因为观测值的动作变化的值。
我看到的.Net手工记录了PCF的消息格式的值。 但我并不十分熟悉的.NET类,不知道他们是否原生支持PCF,或者如果你必须凑齐东西。 (也许沙市将作出回应。)
由于查询的队列统计它们重置为零,你会得到不可预知的结果如果超过一件事是使那些查询。 我通常建议是有一个后台任务进行查询和关闭保存数据。 然后,表示层查询的统计数据,而不是直接查询QMGR数据库。