2010-08-13 6 views
0

Nous sommes en train de déplacer notre plate-forme .NET de l'utilisation de MSMQ vers ActiveMQ. Nous y pompons plus de 30 millions de messages persistants par jour. Le débit et la capacité sont donc essentiels pour nous. La façon dont nos applications dépendantes de MSMQ sont configurées, est d'abord d'écrire dans les files d'attente locales/privées. Ensuite, nous avons un service local qui achemine ces messages vers leurs files d'attente distantes respectives pour traitement. Cela garantit que l'écriture initiale de la mise en file d'attente/écriture est rapide (oui, nous pouvons également utiliser la mise en file d'attente asynchrone), et les messages ne sont pas perdus si les serveurs distants sont indisponibles. Nous allions utiliser le même paradigme pour ActiveMQ, mais maintenant nous avons décidé d'utiliser des VM avec stockage NAS pour la plupart de nos serveurs d'applications. Cela réduit considérablement les performances d'écriture de chaque message, car il va NAS, et je pense que je dois repenser notre approche de la mise en file d'attente. J'aimerais savoir quelle est la meilleure pratique pour utiliser ActiveMQ, avec des besoins persistants et à haut débit. Dois-je envisager d'utiliser des serveurs de file d'attente dédiés (qui ne sont pas des machines virtuelles)? Mais cela signifierait que toutes les écritures de l'application passent directement sur le réseau. Comment gérer les exigences de haute disponibilité?Comment implémenter ActiveMQ avec les machines virtuelles utilisant le NAS

Toutes les suggestions sont appréciées.

Répondre

1

Vous pouvez déployer des instances ActiveMQ dans un network of brokers et la topologie peut inclure des instances locales ainsi que des instances distantes. J'ai déployé des topologies contenant une instance locale d'ActiveMQ afin que les messages soient conservés le plus près possible de l'expéditeur, puis les messages sont transférés vers des instances ActiveMQ distantes en fonction de la demande. Avec ce style de topologie, je recommande de configurer le (s) connecteur (s) réseau pour interdire les messages de transfert de toutes les destinations. C'est-à-dire, au lieu d'autoriser ouvertement la transmission de messages pour toutes les destinations, vous pouvez réduire le nombre de messages transférés à l'aide de la propriété excludedDestinations.

En ce qui concerne la haute disponibilité avec ActiveMQ, la configuration master/slave est conçue exactement pour cela. Il existe trois saveurs selon vos besoins.

Espérons que ça aide.

Bruce

Questions connexes