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). p>
Devrais-je utiliser BlockingQueue ou un auditeur d'événements personnalisés? Quel est le meilleur? p>
En outre, il ne devrait y avoir aucune perte de données. p>
3 Réponses :
limitation de l'utilisation Toutefois, peut utiliser réactifx em> ( bibliothèque observable forte>) pour ce problème. P>
Pourquoi n'essayez-vous pas une queue de messagerie (comme Kafka, rabbbitmq) forte>
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 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>
BlockingQueue est meilleur (généralement). P>