0
votes

Comment recevoir des données de Multi Fil en Java en utilisant un auditeur d'événement personnalisé?

J'ai environ 500 threads (supposez que l'appelez comme x pour tous ces threads), et ces threads reçoivent des données de différents services reposants en permanence. De plus, j'ai 20 threads (supposez que l'appel comme Y pour tous ces threads) pour recevoir des données renvoyées à partir d'autres threads (de x).

Devrais-je utiliser BlockingQueue ou un auditeur d'événements personnalisés? Quel est le meilleur?

En outre, il ne devrait y avoir aucune perte de données.


0 commentaires

3 Réponses :


0
votes

limitation de l'utilisation blockingQueue , il a une file d'attente avec un point de seuil. Postez ce point, plus de threads ne peuvent pas être traités. Dans un scénario, des données perdues n'ont pas pu être récupérées lorsque des exceptions (échecs) sont lancées par des filets (x ou y) (qui ne pouvaient plus être traités à nouveau).

Toutefois, Écouteur d'événement personnalisé est une approche préférable où l'accusé de réception peut être effectué pour tous les fils et, en cas d'exception de thread (échec), nous pouvons récupérer des données perdues en utilisant un mécanisme de retraitement.

peut utiliser réactifx ( bibliothèque observable ) pour ce problème.


0 commentaires

0
votes

Pourquoi n'essayez-vous pas une queue de messagerie (comme Kafka, rabbbitmq) qui fonctionnent comme un support de données entre les threads x et Y. Vous mettez des données dans la file d'attente de X et extraire / traiter les données via Y's qui est asynchrone .

Vous devez opter pour cela, même dans l'auditeur d'événement si nous considérons le nombre de x 500 et Y 20. Puis même pour chaque appel de x il y a 20 appel (supposer) .Qui peut devenir un cou de bouteille sur une charge lourde. < / p>


0 commentaires

0
votes

BlockingQueue est meilleur (généralement).


0 commentaires