Механизм распределенной обработки событий для Java - PullRequest
14 голосов
/ 08 октября 2008

Я ищу достаточно быстрый механизм обработки событий в Java для генерации и обработки событий в разных JVM, работающих на разных хостах.

Для обработки событий в нескольких потоках в одной JVM я нашел несколько хороших кандидатов, таких как Jetlang. Но в моем поиске распределенного эквивалента я не смог найти ничего настолько легкого, чтобы обеспечить хорошую производительность.

Кто-нибудь знает какие-либо реализации, которые соответствуют требованиям?

Edit: Вводить цифры для обозначения производительности немного сложно. Но, например, если вы реализуете механизм сердцебиения с использованием событий и интервал сердцебиения составляет 5 секунд, получатель сердцебиения должен получить отправленное сердцебиение в течение, скажем, секунды или двух.

Как правило, облегченная реализация дает хорошую производительность. Механизм обработки событий, включающий веб-сервер или любой другой централизованный концентратор, требующий мощного оборудования (определенно не легкого) для обеспечения хорошей производительности, - это не то, что мне нужно.

Ответы [ 10 ]

8 голосов
/ 29 октября 2008

Hazelcast Тема представляет собой распределенное решение для обмена сообщениями между публикациями.

public class Sample implements MessageListener {

    public static void main(String[] args) { 
        Sample sample = new Sample();
        Topic topic = Hazelcast.getTopic ("default");  
        topic.addMessageListener(sample);       
        topic.publish ("my-message-object");
    }  

    public void onMessage(Object msg) {
        System.out.println("Message received = " + msg);
    } 
}

Hazelcast также поддерживает события в распределенной очереди, карте, множестве, списке. Все мероприятия тоже заказаны.

С уважением,

-talip

http://www.hazelcast.com

4 голосов
/ 08 октября 2008

В зависимости от вашего варианта использования, Терракотовая может быть отличным выбором.

3 голосов
/ 29 октября 2008

Для распределенной обработки событий вы можете использовать Esper . Он может обрабатывать до 500 000 событий / с на оборудовании Intel с двумя ЦП 2 ГГц. Это очень стабильно, поскольку многие банки используют это решение. Он поддерживает адаптер ввода-вывода JMS на основе шаблонов Spring JMS. Таким образом, вы можете использовать любую реализацию JMS для обработки событий, т.е. ActiveMQ .

3 голосов
/ 08 октября 2008

AMQP (расширенный протокол очереди сообщений) - более подробная информация: http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol это, вероятно, то, что вы ищете.

Он используется финансовыми сервисными компаниями из-за их высоких требований к производительности - у Apache есть реализация - http://cwiki.apache.org/qpid/

OpenAMQ - http://www.openamq.org/ - это старая ССЫЛКА РЕАЛИЗАЦИИ.

2 голосов
/ 29 декабря 2011

ZeroMQ - http://www.zeromq.org/

Хотя это транспортный уровень, его можно настроить для обработки событий.

1 голос
/ 27 сентября 2016

Вам необходимо реализовать Шаблон Observer Design для распределенной обработки событий в Java. Для этого я использую потоковую передачу событий, используя ограниченную коллекцию MongoDB и Observers.

Вы можете создать архитектуру, в которой ваш триггер запускает публикацию документа в закрытой коллекции, и ваш поток наблюдателя ожидает его, используя настраиваемый курсор. Если вы не поняли, что я сказал выше, вам нужно освежить свои навыки MongoDB и java

1 голос
/ 11 января 2012

Взгляните на akka (http://akka.io/).. Он предлагает распределенную модель актера в том же ключе, что и erlang для JVM с API-интерфейсами java и scala.

1 голос
/ 08 октября 2008

Какой бы инструмент вы ни использовали, я бы порекомендовал скрыть API промежуточного программного обеспечения от логики вашего приложения. Например, если вы использовали подход Apache Camel для сокрытия промежуточного программного обеспечения , вы могли бы легко переключиться с AMQP на SEDA на JMS на ActiveMQ на JavaSpaces на свой собственный транспорт MINA на основе ваших точных требований.

Если вы хотите использовать брокер сообщений, я бы рекомендовал использовать Apache ActiveMQ , который является самым популярным и мощным брокером сообщений с открытым исходным кодом, за которым стоит самое большое и самое активное сообщество оба внутри Apache и снаружи .

0 голосов
/ 15 июля 2009

Маршрутизатор событий Avis может подойти для ваших нужд. Это достаточно быстро для доставки событий почти в реальном времени, таких как отправка событий мыши для удаленного управления мышью (приложение, которое мы используем для ежедневного использования).

Avis также используется для чата, виртуального присутствия и автоматизации умных комнат, где обычно 10-20 компьютеров обмениваются данными через шину обмена сообщениями на основе Avis. Его коммерческий кузен (Мантара Элвин) используется для обработки большого объема коммерческих торговых событий.

0 голосов
/ 13 октября 2008

Если реализация JMS не для вас, то вас может заинтересовать подход XMPP . Существует несколько реализаций, а также расширение Publish-Subscribe .

...