Java 在camel/netty环境中查看连接状态

Java 在camel/netty环境中查看连接状态,java,apache-camel,netty,Java,Apache Camel,Netty,我希望了解驼峰/网络环境中的连接状态 为此,我尝试了以下方法: 指定我的骆驼路线 from(“direct:in”).marshal().serialization() .至(“netty”:tcp://localhost:42123?clientPipelineFactory=#cpf&sync=false"); 我的管道工厂 公共类连接StatusPipelineFactory扩展了ClientPipelineFactory{ @凌驾 公共ChannelPipeline getPi

我希望了解驼峰/网络环境中的连接状态

为此,我尝试了以下方法:

  • 指定我的骆驼路线
from(“direct:in”).marshal().serialization()
.至(“netty”:tcp://localhost:42123?clientPipelineFactory=#cpf&sync=false");
  • 我的管道工厂
公共类连接StatusPipelineFactory扩展了ClientPipelineFactory{
@凌驾
公共ChannelPipeline getPipeline()引发异常{
ChannelPipeline cp=Channels.pipeline();
cp.addLast(“statusHandler”,新连接statusHandler());
返回cp;
}
@凌驾
公共客户PipelineFactory createPipelineFactory(净生产者){
返回新连接StatusPipelineFactory();
}
}
  • 实现了我的连接状态处理程序
公共类ConnectionStatusHandler扩展了SimpleChannelUpstreamHandler{
@凌驾
公共无效channelConnected(ChannelHandlerContext ctx、ChannelStateEvent e)
抛出异常{
System.out.println(“事件:+e”);
超级信道连接(ctx,e);
}
@凌驾
公共无效通道断开连接(ChannelHandlerContext ctx,
ChannelStateEvent(事件e)引发异常{
System.out.println(“事件:+e”);
超级通道断开(ctx,e);
}
}
最后在我的camel注册表中将“ConnectionStatusPipelineFactory”绑定到“cpf”

但发生了以下异常:

java.lang.IllegalArgumentException: unsupported message type: class [B
备注:

  • 按预期调用“channelConnected”和“channelDisconnected”方法
  • 当我禁用此功能时,一切正常(消息编组、连接、远程进程…)
问题包括:

  • 怎么了
  • 这是了解连接状态(已连接或未连接)的好方法吗

尝试改用解码器选项,而不是整个客户端管道工厂。 例如使用选项
解码器=#myConnectionStatusHandler
。然后在注册表中注册名为myConnectionStatusHandler的ConnectionStatusHandler


如果您使用管道工厂,则需要添加Camel现成添加的所有其他工厂。

2年!我真丢脸。。。真的很抱歉!当时,我很快测试了您的解决方案,但未能实现。所以我做了其他的事情,忘了再试一次。今天使用camel netty 2.15.2(未在netty 4上测试)完成了此功能。我仍然有以下异常“IllegalArgumentException:不支持的消息类型:class java.lang.String”。看起来我也需要“添加Camel在开箱即用中添加的所有其他内容”。。。我不确定这个问题是否对某人有帮助,但我讨厌没有回答。无论如何,谢谢你的帮助。