由TCP连接上的异步事件(xml消息)驱动的Java客户机





我需要编写一个Java客户端应用程序,它需要建立一个TCP连接到发送事件(xml消息)的服务器。在从服务器接收事件之前,客户端还将发送xml消息以在服务器上创建通道,服务器将发送响应。然后,客户机在接收到事件消息时,必须处理它们,并通过相同的TCP连接使用xml响应消息进行响应。服务器是遗留应用程序,我无法控制它。
服务器还发送健康检查消息以评估客户端创建的通道,客户端必须响应该通道以保持通道活动。

我在Java中没有NIO/Socket/TCP编程的经验,所以想知道实现这个客户端的简单而优雅的方法是什么。

我对Spring有不错的经验,我想知道我是否可以使用Spring来连接一些组件,如:(1)TCP连接网关/适配器,它将负责打开/监视连接状态(2)编组器/解组器将消息从XML转换为Java,反之亦然;(3)消息接收器和发送器实际接收/侦听消息并发送响应。

要记住的一件事是,服务器会发送大量的事件消息,客户端必须非常快速地处理它们并立即响应。因此消息处理不能串行进行。

任何对库或示例代码的建议或指针都是高度赞赏的。

谢谢。

如果您不能串行地处理消息(除非您的客户机性能特别差),我会非常惊讶

我将使用一个简单的IO套接字和一个STaX事件解析器来解码消息。Javolution XML解析器非常快。我不喜欢Spring,因为它倾向于为简单的问题提供复杂的解决方案。您应该能够使用一个类文件和几个小的嵌套类来完成所有这些工作。不要害怕自己写代码,这是你成为一个更有经验的开发人员的方法。

我希望您能够在一个reader线程中每秒处理1000多个大XML消息和多达20万个小XML消息。

最新更新