Mule ESB Как реализовать переменную-счетчик, чтобы подсчитывать, сколько раз вызывается поток
Я задаюсь вопросом о том, как реализовать счетчик, который будет увеличиваться на 1 шаг при вызове потока. Например: у меня есть поток с именем: http://localhost:8080/doSomething и счетчик переменных. Переменная-счетчик увеличится на 1, когда я нажму enter в сервисе doSomething
Большое спасибо
5 ответов
Если вам необходимо хранить данные времени выполнения, доступные в приложении, вы можете сохранить эти данные в реестре в виде объектов. Вот пример
Чтобы установить значение
<scripting:component doc:name="Groovy">
<scripting:script engine="Groovy">
<![CDATA[muleContext.getRegistry().registerObject("Count", new Integer(14))]]>
</scripting:script>
</scripting:component>
Чтобы прочитать значение
<logger message="Count #[app.registry.get('Count')]" level="INFO" doc:name="Logger"/>
Инициализируйте переменную с целочисленным значением 1 в реестре приложения mule при запуске вашего потока, как показано ниже:
<expression-component doc:name="Expression"><![CDATA[#[app.registry.put('counter',1)]]]></expression-component>
Для увеличения значения используйте:
<expression-component doc:name="Expression"><![CDATA[#[app.registry.put('counter',app.registry['counter']+1)]]]></expression-component>
Чтобы получить окончательное значение флага счетчика, используйте выражение:
#[app.registry.get('counter')]
Вам нужно постоянное решение для хранения. Переменные в Mule не живут через вызовы. У Мула есть концепция хранилищ объектов: https://docs.mulesoft.com/mule-user-guide/v/3.7/mule-object-stores
Если вы являетесь клиентом Mule Enterprise, аналитика может быть включена в вашу подписку.
Если вы просто пытаетесь собрать статистику, то я предлагаю вам рассмотреть возможность использования MuleSoft Insight. Вы сможете настроить собственные бизнес-события в своих потоках и отслеживать важную информацию. Наконец, вы можете использовать Insight Dashboard на CloudHub для получения соответствующей статистики, применяя различные фильтры.
У вас может быть хранилище объектов в вашем потоке, которое может хранить ваш счетчик (количество обращений к вашему потоку) либо в памяти, либо в постоянном хранилище. Затем вы можете получить счетчик и увеличить его при последующем попадании в ваш поток. https://docs.mulesoft.com/mule-user-guide/v/3.9/object-store-module-reference