Spring-Integration TCP - > eh-cache链

时间:2014-07-17 14:25:43

标签: java spring caching ehcache spring-integration

我有一个带有请求和响应的Spring-Integration TCP服务器,它可以正常工作。那么现在我必须在我的应用程序中添加一个新图层。

我必须将我的消息发送到eh-cache db,然后发回ACK。目前我只有一个tcp客户端,但将来我会有其他来源,如下面的架构。

enter image description here

现在的问题是: 我可以使用Spring-Integration配置此行为吗? 我知道我可以在我的‘importService’上接收消息并将其放在我的eh-cache上以这种方式编写代码:

public MyMessage handler(MyMessage message) {
        try {
            myCache.put(mykey, message)
            } catch (Exception e) {
            logger.error("unable to update" + e);
            }
        return message;
    }

但我认为它不正确,我只是想知道我是否可以配置我的spring配置文件并添加另一个端点以创建链。 我当前的配置文件是:

<int-ip:tcp-connection-factory id="serverTcpConFact"  type="server"  port="5566"  using-nio="false"        single-use="false"
  so-receive-buffer-size="8192"
    so-send-buffer-size="8192"
    so-tcp-no-delay="true"
    task-executor="myTaskExecutor"
    deserializer="serializer" 
    serializer="serializer"/>

<int-ip:tcp-inbound-channel-adapter id="tcpInboundAdapter"
    channel="tcpInbound"
    connection-factory="serverTcpConFact" />

<int:channel id="tcpInbound" />

<int:service-activator 
    output-channel="tcpOutbound" 
    input-channel="tcpInbound"
    ref="importService"
    method="handler" />

<bean id="importService" class="com.MyImportService" />

<int:channel id="tcpOutbound" />

<int-ip:tcp-inbound-gateway id="mygateway"
    request-channel="tcpInbound"
    reply-channel="tcpOutbound"
    reply-timeout="6"/>

<int-ip:tcp-outbound-channel-adapter id="tcpOutboundAdapter"
    channel="tcpOutbound"
    connection-factory="serverTcpConFact" />

我正在查看公开示例,但我没有找到eh-cache示例和链示例。 谢谢 !!

1 个答案:

答案 0 :(得分:1)

好吧,看起来它足以将缓存逻辑移到ChannelInterceptor

<int:channel id="tcpInbound">
   <int:interceptors>
        <bean class="com.my.proj.si.CachePutChannelInterceptor"
   </int:interceptors>
</int:channel>

当你需要使用Cache时,可以从任何地方使用这个拦截器。