如何从Solclient API获取solace队列统计信息? C#

时间:2019-05-27 09:25:40

标签: solace

我正在寻找一些Solace队列统计信息,例如当前假脱机的消息超出了最大限制,我们无法设置阈值以停止将更多消息发布到队列。 另外,订阅vpn事件以跟踪消息丢弃率。

等到我们收到错误消息时,例如MaxMsgUsageExceeded / SpoolOverQuota,为时已晚。

我似乎在SolaceSystems.Solclient.Messaging API上找不到任何这些 https://docs.solace.com/API-Developer-Online-Ref-Documentation/net/html/7f10bcf6-19f4-beff-0768-ced843e35168.htm

如果有人可以帮助的话,那会很棒 (为此使用C#)

1 个答案:

答案 0 :(得分:0)

要从C#应用程序中轮询Solace队列统计信息,可以在消息总线上使用旧式SEMP发出SEMP请求以获取所需的详细信息。 Semp(Solace元素管理协议)是一种请求/答复协议,它使用XML架构来标识消息代理中所有可用的托管对象。应用程序可以使用SEMP来管理和监视消息代理。

要允许旧版SEMP通过消息总线使用,而不是使用管理界面,则首先需要在VPN级别的Solace PubSub +消息代理上启用它。

要使用Solace .Net Messaging API发布SEMP请求,请执行以下步骤:

  1. 创建会话。
  2. 创建消息主题。 “#SEMP // SHOW”

    ITopic topic = ContextFactory.Instance.CreateTopic( “#SEMP/<router name>/SHOW”);
    
  3. 创建请求消息并将其目标设置为步骤2中的主题:

    IMessage requestMsg = ContextFactory.Instance.CreateMessage();
    requestMsg.Destination = topic;
    
  4. 将SEMP请求字符串设置为二进制附件。

    string SOLTR_VERSION = "8_4_0" //change to the message-broker's version
    string SEMP_SHOW_QUEUE = "<rpc semp-version=\"soltr/" + SOLTR_VERSION +
      "<show><queue><name>queueName</name><detail></detail></queue></show></rpc>";
    requestMsg.BinaryAttachment = Encoding.UTF8.GetBytes(SEMP_SHOW_QUEUE);
    
  5. 在Session上调用SendRequest(…)方法。

    IMessage replyMsg;
    ReturnCode rc = session.SendRequest(requestMsg, out replyMsg, timeout);
    
  6. 将SEMP响应返回给ReplyMsg。

  7. 从回复消息中获取二进制附件数据:

    replyMsg.BinaryAttachment
    

二进制附件包含发布请求中针对命令主题的SEMP答复。


当出口消息被丢弃时,Solace PubSub +消息代理确实会引发事件。但是,对于指定的客户端,它仅大约每60秒发送一次,因此无法获得这些准确的费率。

您的.NET应用程序有可能通过消息总线预订VPN级别的事件。为此,您必须首先启用Solace PubSub +消息代理来发布事件。然后,您可以订阅特殊主题并以消息形式接收事件。 要订阅的主题是:

#LOG/<level>/VPN/<routerName>/<eventName>/<vpnName>

不同级别可以使用*通配符。例如,如果您希望为路由器QA-NY1上的VPN苹果订阅所有级别的所有VPN事件,则主题字符串为:

#LOG/*/VPN/QA-NY1/*/apple