Управление пулом агентов вне JVM и связью - PullRequest
3 голосов
/ 22 июля 2010

Мне нужно управлять пулом агентов из моего приложения. Все они написаны на Java, но агенты должны работать в своей собственной JVM. Я написал подтверждение концепции, которая запускает подпроцессы и использует stdout / stdin для отправки команд и информации поддержки активности. Я также открываю сокет соединения для передачи данных.

Я полагаю, что некоторые библиотеки пула подключений могут помочь в управлении агентами.

А как насчет связи между агентами и основным процессом? Использование TCP с сообщениями XML (JAXB) не так надежно или удобно, как хотелось бы. Любое предложение для лучшей библиотеки, чтобы помочь здесь?

Я мог бы очень хорошо написать, что мне нужно, но я уверен, что другие люди уже сделали это лучше.

Ответы [ 3 ]

1 голос
/ 22 июля 2010

Для обмена сообщениями можно попробовать что-то вроде ZeroMQ , это инструмент для обмена сообщениями и имеет локальные транспорты для связи между процессами, тогда вы можете просто сериализовать объекты между процессами.

Альтернативой являетсявернитесь к традиционно rmi, возможно, к самому простому.

0 голосов
/ 20 ноября 2012

Я действительно нашел два способа, которые были бы очень полезны, когда я разработал это:

  1. WebSockets. Я использовал простые сокеты, но затем мне пришлось заново изобрести сигнализацию, чтобы проверить, кто отправляет и завершил отправку. Я использовал линейный подход, но он действительно ужасен. WebSockets предлагает общение на основе сообщений, и это здорово.
  2. Hazelcast. Это «распределенная система», которая предлагает такие замечательные вещи, как распределенные исполнители (я планирую отправить сообщение на сервер приложений, и пусть любой доступный агент из jvm обрабатывает его, атомарно), разделяемые и поточно-ориентированные хеш-таблицы (для сохранения отслеживание того, кто работает) и т. д. Многие из подобных инструментов, которые я видел, были либо в собственном коде (например, ZeroMQ), либо с лицензиями на процессор и тому подобное. Hazelcast является общедоступной версией и может быть встроен в мои приложения.

На самом деле, я начал использовать vert.x для управления связью через веб-сокет и понял, что он сам использует Hazelcast.

0 голосов
/ 22 июля 2010

Вы можете попробовать Гессиан:

http://hessian.caucho.com/

или Преон:

http://preon.sourceforge.net/

...