2010-07-23 7 views
4

Je vais développer ma propre implémentation de file d'attente de messages en Java et j'ai besoin de distribuer le contenu de la file d'attente sur plusieurs serveurs pour qu'il soit fiable et redondant.Structures de données distribuées en Java

En plus de cela, j'ai besoin de maintenir le contenu de la file d'attente dans le système de fichiers. Quelqu'un peut-il me dire quelle est l'implémentation de la structure de données répartie la plus appropriée pour contenir le contenu de ma file d'attente?

Remarque: Cette structure de données doit me fournir la possibilité de commander les messages. Cela signifie que j'ai besoin de recevoir des messages en fonction de l'ordre dans lequel ils sont arrivés. Aussi pendant la lecture d'un message, il doit être verrouillé pour que les autres consommateurs ne puissent le lire jusqu'à ce que le premier consommateur termine le processus de lecture.

+3

Une raison particulière pour laquelle vous devez implémenter votre propre implémentation de file d'attente de messages plutôt que d'en utiliser une existante? Si vous pouvez nous dire quelles solutions existantes vous avez examinées et pourquoi elles ne fonctionnent pas pour vous, cela pourrait nous aider à déterminer vos besoins réels et ce qui fonctionnerait le mieux pour eux. –

+0

Utilisez simplement [Hazelcast Distributed Queue] (http://hazelcast.com/docs/2.0/manual/single_html/#Queue). C'est une pure file d'attente Java peer2peer qui est soutenue par une implémentation de carte distribuée qui peut être persistante. –

Répondre

6

Avez-vous consulté l'une des nombreuses implémentations de file d'attente de messages existantes pour java? Wikipedia lists de nombreuses implémentations open source. Il me semble qu'une file d'attente existante et soigneusement testée est le meilleur endroit pour contenir le contenu de votre file d'attente :)

Si vous voulez absolument écrire le vôtre, alors commencer par la solution open source qui correspond le mieux à vos besoins répondez à la plupart de vos questions sur les structures de données qui fonctionnent bien.

+0

Merci Peter, Je suis allé à travers plusieurs implémentations de files d'attente de messages et je cherchais la messagerie fiable et les fonctionnalités d'abonnement durables. Il semble que la plupart d'entre eux utilisent la persistance basée sur les fichiers pour le stockage des messages et des courtiers. Mais ici, je prévois d'utiliser le stockage distribué pour le backend MQ et je veux le rendre 'pluggable' avec de nombreux types de stockage distribué. En plus de cela, j'ai besoin de prendre en charge un riche ensemble de protocoles de transport (tels que REST, XMPP) pour cette file d'attente. Ces fonctionnalités sont difficiles à mettre en œuvre, mais au moins je dois essayer. Merci –

+3

ActiveMQ prend en charge les backends de stockage enfichables et les mécanismes de transport (y compris REST et XMPP). Cela vous donnerait la flexibilité d'implémenter votre propre stockage et de le transporter, aucune des implémentations fournies ne convient sans avoir à écrire l'implémentation complète de la file de messages. – Mark

+1

@Dunith Dhanushka Que voulez-vous dire par "stockage distribué?" ActiveMQ vous permet de stocker vos données de différentes manières et prend également en charge les options de mise en cluster telles que la réplication maître/esclave. –

Questions connexes