链中的变压器可以调用通道进行记录吗?

时间:2012-06-07 05:55:00

标签: spring-integration

<chain input-channel="afiHeadToHeaderChannel" output-channel="simResMsgOutBoundChannel">
    <transformer ref="afiHeadToHeaderTransform" />
    **<transformer ref="fixedToMapTransform"**  
    <transformer ref="simReqResTransform" />
    <transformer ref="mapToFixedTransform" />
    <transformer ref="headerToAfiHeadTransform" />
</chain>

执行变换器“fixedToMapTransform”后,我想使用Message进行日志记录。 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

没有Spring Integration-“本地”方式(如Gary指出的那样)但你可以编写自己的日志记录激活器。

<chain input-channel="afiHeadToHeaderChannel" output-channel="simResMsgOutBoundChannel">
    <transformer ref="afiHeadToHeaderTransform" />
    <transformer ref="fixedToMapTransform"/>
    <service-activator ref="loggingActivator" method="handleMessage" />
    <transformer ref="simReqResTransform" />
    <transformer ref="mapToFixedTransform" />
    <transformer ref="headerToAfiHeadTransform" />
</chain>

<beans:bean id="loggingActivator" class="com.mycompany.LoggingActivator" />

和激活码:

public class LoggingActivator {
  private static final Log LOG = LogFactory.getLog(LoggingActivator.class);

  public Message< ? > handleMessage(final Message< ? > message) {
    LOG.debug(message);
    return message;
  }
}

答案 1 :(得分:1)

你不能;链中的端点与匿名通道连接。您必须将链断开为两个,第一个的输出通道是第二个的输入通道;然后,你可以点击那个频道。

链条是一个“黑匣子”。