Question Quand utiliser un bus d'événement? [fermé]


Je conçois le backend pour une nouvelle application Web Java et j'essaie de décider d'utiliser ou non un bus d'événement. spécifiquement le Goyave EventBus.

La plupart des requêtes côté serveur seront synchrones: l'utilisateur demandera des données et aura besoin d'une réponse en quelques secondes. Cependant, il existe également un nombre assez important de requêtes qui peuvent être asynchrones et qui sont "ignoré" du côté client. Tant qu'ils sont finalement traités, le client pourrait se soucier moins s'il faut 2 secondes pour traiter ou 2 heures.

Pour ces requêtes asynchrones, je prévois que la servlet écoute à l'URL mappée, publie les demandes dans une file d'attente. Un consommateur va alors mettre en file d'attente chaque requête et la transmettre au gestionnaire approprié. C'est là que le EventBus peut ou peut ne pas entrer en jeu. La logique métier de routage de la demande vers le gestionnaire approprié est assez complexe. Normalement, une route de Camel serait la solution parfaite. Dans mon cas, je me demande si je peux simplement transférer un groupe de «processeurs» (gestionnaires d’événements) sur le même bus d’événement, puis faire en sorte que chacun reçoive et reçoive des événements jusqu’à ce que le résultat final soit atteint. produit.

Je voudrais dire que j'ai déjà exploré l'utilisation d'Apache Camel, et que je pense que Camel est le bon outil pour ce travail ici. Malheureusement, pour des raisons hors de la portée de cette question, je ne vais pas l'utiliser. J'ai donc commencé à évoquer des solutions de type camel, c'est ainsi que je suis arrivé chez Guava EventBus. Mais cela pourrait ne pas être un remplacement approprié.

Je suppose que je cherche la classification du problème que le Event Bus motif résout, et puis je dois déterminer si cela correspond à mon cas d'utilisation ici.


19
2018-02-07 02:23


origine


Réponses:


Voici la déclaration de problème que EventBus résout en quelques mots:

"Je souhaite un moyen simple et centralisé pour notifier le code qui s'intéresse à des types spécifiques d'événements lorsque ces événements se produisent sans aucun couplage direct entre le code qui publie un événement et le code qui le reçoit."

Lorsque vous dites "la logique métier de routage de la requête vers le bon gestionnaire est assez complexe", je suspect cette EventBus n'est peut-être pas ce que vous recherchez, car il ne se base que sur la classe d'objet Java (bien que vous puissiez faire des choses fantaisistes avec des interfaces d'implémentation sur vos classes d'événements et que des abonnés s'abonnent à des interfaces spécifiques).


36
2018-02-07 23:14