我将Apache Camel与Apache Mina结合使用以拥有TCP Server。我在代码中使用了特定的协议解码器。在此解码器中,我等待获取X字节的字节,然后再将它们发送到路由的下游。

我想实现一些能够理解会话处于空闲或关闭状态,然后将已经向下游发送的字节发送到路由的东西(如果我们没有获得总的X字节则无所谓)。我已经尝试实现覆盖方法IoFilterAdaptersessionIdle(),但是我不确定如何使用它。

最佳答案

覆盖sessionIdle()方法基本上是用于在达到会话空闲时间后关闭(或根据需要配置)会话。

您可以通过覆盖IoFilterAdapter方法在处理程序类中设置空闲时间(或通过扩展sessionOpened())。
像这样的事情应该做的工作:

@Override
public void sessionOpened(final IoSession session) throws Exception
{
    session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, this.idleTimeOut);
}


您还可以使用在IdleStatus类中定义的其他空闲状态。基本上有状态:

public static final IdleStatus READER_IDLE = new IdleStatus("reader idle");
public static final IdleStatus WRITER_IDLE = new IdleStatus("writer idle");
public static final IdleStatus BOTH_IDLE = new IdleStatus("both idle");

10-04 18:54