2015-04-09 2 views
0

Я работаю над проектом интеграции с Spring и хочу реализовать аналитику. Основная идея заключается в том, чтобы захватить имя метода, временную метку и количество раз, вызываемых во всех шлюзах.Как реализовать аналитику в проекте интеграции весны?

Есть ли какой-либо пакет/класс по умолчанию для регистрации этих данных?

Вот что я думал, что делать, и нужно предложение, прежде чем продолжить

Шаг 1: Добавить имя метода притолока метод

<int:gateway id="gateway" service-interface="org.pro.gateway.SampleGateway"> 
    <int:method name="method1" request-channel="request.input.channel" reply-channel="reply.output.channel"> 
     <int:header name="methodName" value="placeOrder"/> 
    </int:method> 
</int:gateway> 

Шаг 2: Добавить перехватчик перехвата пружины, применить шаблон, который соответствует только входному каналу. Получите заголовок сообщения по имени в канале прослушивания и запишите его.

<int:wire-tap channel="wiretapChannel" pattern="input*" /> 

<int:service-activator ref="analyticsBean" method="footprint" input-channel="wiretapChannel" output-channel="outputChannel"/> 

<bean id="analyticsBean" class="org.pro.stat.AnalyticService"/> 

Шаг 3: код реализации

public class AnalyticsService { 
    public void footprint(Message<String> msg){ 
    String methodName = msg.getHeaders().get("methodName"); 
    long timestamp = msg.getHeaders().getTimestamp(); 
    /* Send to some service/store it in file with incremented value */ 
    storeIt(methodName, timestamp); 
}} 

ответ

0

ваши шаги выглядят хорошо. Однако почему бы не использовать службу Analytics @Async (с использованием службы исполнителей задач весной), таким образом не потребляя нагрузку на ваш родительский поток.

+0

да .. его хорошее предложение. я буду использовать @Async –

Смежные вопросы