Question

Demain je présente ma raison d'être d'avoir choisi un message mise en œuvre de file d'attente en cours, et je suis incapable d'articuler mon raisonnement. Mes co-designers proposent que nous mettons en œuvre une simple file d'attente asynchrone en utilisant seulement une liste de base des emplois et un mutex pour contrôler l'accès, où je suggère ActiveMQ en mode intégré. J'ai personnellement été très impressionné par ActiveMQ, et je voudrais avoir quelques bons arguments solides pour étayer mon impression de l'intestin.

S'il importe, l'application est essentiellement 1 producteur / n consommateurs, la priorité et le type d'informations spécifiques aux différents travaux en cours de traitement.

Il est intéressant de noter que jusqu'à présent la gestion et l'extensibilité de la solution n'ont pas été arguments puissants. J'aimerais si quelqu'un pourrait donner mes arguments plus de punch. le forum peut-il me aider avec ça?

Était-ce utile?

La solution

Vos collègues arguments ne sont pas sans fondement. Ajout ActiveMQ au projet est l'ajout d'une autre dépendance. Il sera probablement plus compliqué à utiliser, et il aura une plus grande empreinte d'une solution personnalisée. En outre, étant donné que vous adoptez, il va probablement devenir votre responsabilité de maintenir et de continuer à travailler en douceur -. Insectes et tout

Cela dit, ActiveMQ (et d'autres files d'attente) va faire des choses que vous pourriez écrire vous-même, mais pourrait se révéler être une douleur. Soutenir l'ensemble de l'API JMS est l'un d'entre eux (bien que je présume que vous utilisez Java ... si vous n'êtes pas, alors ce point est non valide). Sérialisation excès des messages sur le disque dans des situations de mémoire haute est une autre. abonnés durables et sélecteurs de messages sont quelques autres choses qui viennent à l'esprit. La plupart du temps cloches et sifflets genre de chose pour vos besoins, il semble, mais ils deviennent très importants pour la livraison fiable des messages.

Quoi que vous décidiez, résumer le choix final du courtier de messages loin du code client pour le rendre plus facile à changer.

Autres conseils

Si la maniabilité et l'extensibilité ne sont pas des priorités élevées alors je me demande ce que vos raisons de vouloir utiliser une file d'attente de messages gérable? Peut-être que vos collègues ont raison, et vous avez vraiment ne pas besoin de l'ensemble supplémentaire de fonction?

Ne pas avoir à déboguer le code dans les cas de concurrency bord étranges est un grand avantage. Je ne sais pas à quel point cette structure est dans le cadre de votre projet dans son ensemble, mais si la file d'attente de messages est une grande partie de votre projet, vous pouvez récolter énormes avantages en utilisant une mise en œuvre que quelqu'un d'autre a écrit, déjà débogué, et maintiendra pour vous. Si c'est juste une partie unique d'un sous-système sans importance, il n'a probablement pas d'importance ce que vous finissez par faire. Mais si elle est critique, je produis bien plutôt un rapport de bogue que de passer mon temps le débogage du code d'accès simultané (je commence déjà à reculer dans la peur!).

La version courte: Ne laissez pas l'arrêt de syndrome NIH vous d'utiliser le travail de quelqu'un d'autre pour faire votre travail plus vite, mieux et moins cher. Mais ne pas construire une montagne d'une taupinière, que ce soit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top