3

我需要从我的应用程序中管理一个代理池。所有这些都是用 Java 编写的,但代理需要在自己的 JVM 中运行。我写了一个概念证明,它启动子进程并使用标准输出/标准输入来发送命令和保持活动信息。我还为数据传输打开了一个套接字连接。

我想一些连接池库应该能够帮助管理代理。

代理和主进程之间的通信呢?将 TCP 与 XML 消息 (JAXB) 一起使用并不像我想要的那样可靠或方便。有什么建议可以在这里提供更好的图书馆吗?

我自己可以很好地写出我需要的东西,但我相信其他人已经做得更好了。

4

3 回答 3

1

对于消息传递可以尝试类似ZeroMQ的东西,它是一个消息传递工具,并且具有用于进程之间通信的本地传输,然后您可以只在进程之间序列化对象。

另一种方法是回到传统的 rmi,这可能是最简单的。

于 2010-07-22T05:05:34.700 回答
0

你可以试试黑森:

http://hessian.caucho.com/

或 Preon:

http://preon.sourceforge.net/

于 2010-07-21T23:10:48.450 回答
0

实际上,当我开发这个时,我发现了两种很有帮助的方法:

  1. 网络套接字。我使用了简单的套接字,但后来我需要重新发明信号来检查谁在发送并完成发送。我使用了基于行的方法,但它真的很难看。WebSockets 提供基于消息的通信,这很棒。
  2. 榛树。这是一个“分布式系统”,并提供了很棒的东西,比如分布式执行器(我安排在应用服务器中发送一条消息,并让任何可用的 jvm 外代理以原子方式处理它)、共享和线程安全的哈希图(以保持跟踪谁在运行)等等。我见过的许多类似工具要么是原生代码(比如 ZeroMQ btw),要么是每个 CPU 许可证等。Hazelcast 是社区版,可以捆绑到我的应用程序中。

实际上,我已经开始使用 vert.x 来处理基于 websocket 的通信,并意识到它本身就是使用 hazelcast。

于 2012-11-20T10:26:30.407 回答