Mécanisme de gestion des événements dissortingbués pour Java

Je recherche un mécanisme de traitement des événements relativement rapide en Java pour générer et gérer des événements sur différentes machines virtuelles Java s’exécutant sur différents hôtes.

Pour la gestion des événements sur plusieurs threads dans une seule machine virtuelle, j’ai trouvé de bons candidats comme Jetlang. Mais dans ma recherche d’un équivalent dissortingbué, je n’ai trouvé aucun élément suffisamment léger pour offrir de bonnes performances.

Est-ce que quelqu’un connaît des implémentations qui correspondent au projet de loi?

Edit: Mettre des chiffres pour indiquer les performances est un peu difficile. Mais par exemple, si vous implémentez un mécanisme de pulsation utilisant des événements et que l’intervalle de pulsation est de 5 secondes, le récepteur de pulsation doit recevoir une pulsation envoyée en une seconde ou deux.

Généralement, une implémentation légère donne de bonnes performances. Un mécanisme de gestion des événements impliquant un serveur Web ou tout type de concentrateur centralisé nécessitant un matériel puissant (certainement pas léger) pour offrir de bonnes performances n’est pas ce que je recherche.

Hazelcast Topic est une solution dissortingbuée de messagerie pub-sub.

public class Sample implements MessageListener { public static void main(Ssortingng[] 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 prend également en charge les événements sur les files d’attente dissortingbuées, les mappes, les ensembles et les listes. Tous les événements sont commandés aussi.

Cordialement,

-talip

http://www.hazelcast.com

En fonction de votre cas d’utilisation, Terracotta peut constituer un excellent choix.

AMQP (Advanced Message Queuing Protocol) – plus de détails: http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol est probablement ce que vous recherchez.

Il est utilisé par les sociétés de services financiers pour leurs hautes performances – apache a une implémentation en cours – http://cwiki.apache.org/qpid/

OpenAMQ – http://www.openamq.org/ est une version plus ancienne MISE EN OEUVRE DE RÉFÉRENCE.

Esper peut être utilisé pour le traitement d’événements dissortingbués. Il peut traiter jusqu’à 500 000 événements sur un matériel à deux processeurs à base de processeur Intel à 2 GHz. Il est très stable, car de nombreuses banques l’utilisent. Il prend en charge les adaptateurs d’entrée et de sortie JMS basés sur les modèles Spring JMS. Vous pouvez donc utiliser n’importe quelle implémentation JMS pour le traitement des événements, à savoir ActiveMQ .

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

Bien qu’il s’agisse d’une couche de transport, elle peut être personnalisée pour la gestion des événements.

Quel que soit l’outil que vous utilisez, je vous recommande de masquer les API de middleware de votre logique d’application. Par exemple, si vous utilisiez l’approche Apache Camel pour masquer les middlewares, vous pourriez facilement passer d’AMQP à SEDA à JMS à ActiveMQ à JavaSpaces vers votre propre transport MINA personnalisé en fonction de vos besoins.

Si vous souhaitez utiliser un courtier de messages, je vous recommanderais d’utiliser Apache ActiveMQ, le courtier de messages open source le plus populaire et le plus puissant, doté de la plus grande communauté la plus active, à la fois à l’intérieur et à l’ extérieur d’ Apache.

Jetez un oeil à akka (http://akka.io/). Il propose un modèle d’acteur dissortingbué dans la même veine que erlang pour la machine virtuelle Java avec les API java et scala.

Vous devez implémenter un modèle de conception Observer pour la gestion des événements dissortingbués en Java. J’utilise Event Streaming en utilisant une collection limitée de MongoDB et des observateurs pour y parvenir.

Vous pouvez créer une architecture dans laquelle votre déclencheur publie un document dans une collection limitée et que votre thread observateur l’attend à l’aide d’un curseur disponible. Si vous n’avez pas compris ce que j’ai dit plus haut, vous devez améliorer vos compétences en MongoDB et en Java

Si une implémentation JMS ne vous convient pas, vous pouvez être intéressé par une approche XMPP . Il existe plusieurs implémentations et possède également une extension Publish-Subscribe .

Le routeur d’événement Avis peut être adapté à vos besoins. Il est assez rapide pour la livraison d’événements en temps quasi réel, tel que l’envoi d’événements de souris pour le contrôle de la souris à distance (une application que nous utilisons quotidiennement).

Avis est également utilisé pour le chat, la présence virtuelle et l’automatisation des salles intelligentes, où 10 à 20 ordinateurs communiquent via un bus de messagerie basé sur Avis. Son cousin commercial (Mantara Elvin) est utilisé pour le traitement de gros volumes d’événements commerciaux.