En ce qui concerne ActiveMQ: J'ai un scénario dans lequel un producteur envoie de petits fichiers (environ 10 Ko) aux consommateurs. Bien que les fichiers soient petits, les consommateurs ont besoin d'environ 10 secondes pour les analyser et retourner le résultat au producteur. J'ai beaucoup recherché, mais je ne trouve toujours pas de réponses aux questions suivantes:ActiveMQ: Lenteur de traitement des consommateurs
- Comment faire pour que le courtier stocke les fichiers (complètement) dans une file d'attente?
- Devrais-je utiliser ObjectMessage (car les fichiers sont petits) ou des messages blob?
- Parce que les consommateurs sont en cours de traitement lent, devrais-je abaisser leur prefetchLimit ou utiliser une politique de répartition à la ronde? Quel est le meilleur?
- Enfin, dans la FAQ ActiveMQ, je lis ceci: "Si un consommateur reçoit un message et ne le reconnaît pas avant de le fermer, le message sera remis à un autre consommateur.". Donc, ma question est la suivante: ActiveMQ garantit-elle qu'un seul consommateur traitera le message (et donc il n'y aura qu'une seule réponse au producteur), ou non? Quand le consommateur reconnaît-il un message (par défaut, les paramètres d'accusé de réception automatique) - lors de la réception du message et de son stockage dans une session, ou lorsque le gestionnaire onMessage est terminé? Et aussi, parce que les consommateurs sont si lents dans le traitement, devrais-je changer la "limite de délai" afin que le courtier sache combien attendre avant de donner le travail à un autre consommateur (ceci est lié à mes questions précédentes)?
Merci beaucoup pour la réponse rapide! En fait, certaines des choses que j'ai lues sur JMS (exemple - http://en.wikipedia.org/wiki/Java_Message_Service), ne sont pas mentionnées ou sont en contradiction avec ce que j'ai lu sur ActiveMQ. Par exemple, dans cet article, il est dit que les messages sont stockés dans la file d'attente (donc le producteur n'a pas besoin d'être actif au moment où le consommateur consomme le message), que je n'ai pas trouvé sur le site web d'activeMQ . En outre, il dit que dans le modèle de file d'attente (celui dont je parle) - un seul consommateur reçoit le message (qui, comme vous l'avez dit, n'est pas garanti par ActiveMQ). – Petar
Ouais docs pour ActiveMQ peut ne pas être très bon. Mais il stocke certainement les messages, car c'est tout le point de Message Queues (opération asynchrone). Il y a des modes qui n'ont pas de persistance complète, et les gardez simplement dans la file d'attente mémoire du courtier, mais c'est quelque chose que vous devez configurer. – StaxMan