我正在寻找一些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#)
答案 0 :(得分:0)
要从C#应用程序中轮询Solace队列统计信息,可以在消息总线上使用旧式SEMP发出SEMP请求以获取所需的详细信息。 Semp(Solace元素管理协议)是一种请求/答复协议,它使用XML架构来标识消息代理中所有可用的托管对象。应用程序可以使用SEMP来管理和监视消息代理。
要允许旧版SEMP通过消息总线使用,而不是使用管理界面,则首先需要在VPN级别的Solace PubSub +消息代理上启用它。
要使用Solace .Net Messaging API发布SEMP请求,请执行以下步骤:
创建消息主题。 “#SEMP // SHOW”
ITopic topic = ContextFactory.Instance.CreateTopic( “#SEMP/<router name>/SHOW”);
创建请求消息并将其目标设置为步骤2中的主题:
IMessage requestMsg = ContextFactory.Instance.CreateMessage();
requestMsg.Destination = topic;
将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);
在Session上调用SendRequest(…)方法。
IMessage replyMsg;
ReturnCode rc = session.SendRequest(requestMsg, out replyMsg, timeout);
将SEMP响应返回给ReplyMsg。
从回复消息中获取二进制附件数据:
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