我需要编写一个Java客户端应用程序,它需要与发送事件(xml消息)的服务器建立TCP连接。在从服务器接收事件之前,客户端还将发送xml消息以在服务器上创建通道,服务器将发回响应。然后,客户端在收到事件消息时,必须处理它们并通过同一TCP连接回复xml响应消息。服务器是遗留应用程序,我无法控制它。
服务器还发送运行状况检查消息,以评估客户端必须响应的客户端创建的通道,以保持通道的活动。< br />我对Java中的NIO / Socket / TCP编程没有经验,所以想知道实现这个客户端的简单而优雅的方法。
我有很好的Spring经验并且我想知道我是否可以使用Spring来连接一些组件,例如(1)TCP连接网关/适配器,它将负责打开/监视连接状态(2)Marshaller / Unmarshaller将消息从XML转换为Java反之亦然,(3)实际接收/收听消息并发送响应的消息接收者和发送者。
要记住的一件事是,服务器会发送大量的事件消息,客户端必须非常快速地处理它们并立即响应。所以消息处理不能连续发生。
非常感谢您对库或示例代码的任何建议或指示。
感谢。
答案 0 :(得分:1)
如果你不能连续处理这些消息(除非你的客户表现特别糟糕),我会非常惊讶。
我会使用一个简单的IO套接字和一个STaX事件解析器来解码消息。 Javolution XML解析器非常快。我不喜欢Spring,因为它倾向于制作简单问题的复杂解决方案恕我直言。您应该只使用一个类文件和一些小的嵌套类来完成所有这些操作。不要害怕自己编写代码,这就是你成为一个更有经验的开发人员的方式。
我希望你能够每秒处理1000多条大型XML消息,每秒处理200条小型XML消息,只需一个读取器线程。