Как получить статистику очереди утешения из Solclient API? C # - PullRequest
0 голосов
/ 27 мая 2019

Я хочу получить статистику очереди 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 голосов
/ 13 июня 2019

Чтобы опросить статистику очереди Solace из вашего приложения C #, вы можете использовать устаревший SEMP через шину сообщений, чтобы сделать запрос SEMP для получения требуемой информации.Semp (Solace Element Management Protocol) - это протокол запроса / ответа, который использует схему XML для идентификации всех управляемых объектов, доступных в посреднике сообщений.Приложения могут использовать SEMP для управления и мониторинга посредника сообщений.

Чтобы разрешить использование устаревшего SEMP по шине сообщений, в отличие от интерфейса управления, сначала его необходимо включить в брокере сообщений Solace PubSub + на уровне VPN.

Чтобы опубликовать запрос SEMP с помощью Solace .Net Messaging API, выполните следующие действия:

  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. Вызовите метод 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>

На разных уровнях можно использовать подстановочный знак *.Например, если вы хотите подписаться на все события VPN всех уровней для VPN-яблока на маршрутизаторе QA-NY1, строка темы будет выглядеть следующим образом:

#LOG/*/VPN/QA-NY1/*/apple
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...