如何在 spring 集成项目中实施分析?
how to implement analytics in spring integration project?
我正在从事 Spring 集成项目,我想实施分析。基本思路是抓取所有网关中的方法名、时间戳和调用次数。
是否有任何默认包/class 可用于记录这些详细信息?
这是我想做的事情,在我继续之前需要建议
Step 1 : Add method name is gateway method header
<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>
Step 2 : Add Spring Wire tap interceptor, apply pattern which matches only input channel. Get message header by name in the wiretap channel and log it.
<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"/>
Step 3 : Implementation Code
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);
}}
你的脚步看起来不错。
但是,为什么不让分析服务使用@Async(在 spring 中使用任务执行器服务)从而不消耗父线程上的负载。
我正在从事 Spring 集成项目,我想实施分析。基本思路是抓取所有网关中的方法名、时间戳和调用次数。
是否有任何默认包/class 可用于记录这些详细信息?
这是我想做的事情,在我继续之前需要建议
Step 1 : Add method name is gateway method header
<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>
Step 2 : Add Spring Wire tap interceptor, apply pattern which matches only input channel. Get message header by name in the wiretap channel and log it.
<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"/>
Step 3 : Implementation Code
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);
}}
你的脚步看起来不错。 但是,为什么不让分析服务使用@Async(在 spring 中使用任务执行器服务)从而不消耗父线程上的负载。