0



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

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

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

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

非常感谢任何对库或示例代码的建议或指针。

谢谢。

4

1 回答 1

1

如果您不能连续处理消息,我会感到非常惊讶(除非您的客户表现特别糟糕)

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

我希望您应该能够使用一个阅读器线程每秒处理 1000 多条大型 XML 消息和每秒多达 200,000 条小型 XML 消息。

于 2013-06-04T17:55:05.500 回答