2017-03-09 2 views
-1

J'utilise ActiveMQ où je dois les exigences suivantesLimitations du mode de livraison non persistante d'ActiveMQ?

  • Pour avoir très consommateurs rapides que mes producteurs sont déjà très rapide
  • besoin de traitement à des messages de location 2K par seconde
  • Pas besoin de traiter/consommer des messages à nouveau en cas de panne du serveur ou d'autres défaillances. Je peux encore déclencher tout le processus.
  • a besoin pour exécuter le serveur de configuration très normale - 4GiB RAM

J'ai configuré ActiveMQ comme donné ci-dessous

Problèmes/Questions

  • Je ne sais pas comment ActiveMQ stocke les messages en cas de non-persistent delivery mode, est-il possible que mon processus échouera avec des erreurs de mémoire une fois ma taille de file d'attente dépasse une certaine limite ? Je pose cette question parce qu'il est très difficile de tester tout le processus pour moi. Donc, je dois être conscient de la limitation avant de déclencher le processus.
  • Si non-persistent delivery mode ne suffit pas avec mes exigences ci-dessus, y at-il des conseils de réglage des performances avec lequel je peux atteindre mes exigences avec persistent delivery mode (tcp://). J'ai déjà testé avec ce mode, mais il semble que les consommateurs sont très lents ici. De plus, je l'ai déjà essayé d'utiliser DUPS_OK_ACKNOWLEDGE pour faire mon consommation rapide avec persistent delivery mode mais pas de chance.

NOTE: J'utilise dernière version ActiveMQ 5.14

Répondre

1

Je ne sais pas comment ActiveMQ stocker les messages dans le cas du mode de livraison non persistant

ActiveMQ enregistrer des messages dans la mémoire à en premier lieu, et il échangera également sur le disque (il y a un dossier tmp_storage dans le chemin de données ActiveMQ).

est-il possible que mon processus échouera avec des erreurs de mémoire une fois ma taille de file d'attente dépasse une certaine limite

Je ne l'ai jamais rencontré de mémoire dans ActiveMQ, même avec environ un million de messages.

Vous pouvez également vous assurer le contrôle de flux de production (http://activemq.apache.org/producer-flow-control.html). Vous pouvez bloquer le producteur en cas de trop nombreux messages non utilisés.

Et sur les performances de la livraison persistante, je n'ai pas non plus de bonnes méthodes.

+0

Merci pour votre réponse @MallowFox .. pouvez-vous expliquer un peu sur 'producer-flow'. Selon ma compréhension, il est configuré automatiquement? ou devrions-nous faire quelque chose pour ralentir le débit du producteur en cas de forte charge? –

+0

@Vishal Zanzrukia Vous avez juste besoin de définir la limite memoryUsage et la limite de tempUsage dans le fichier xml de config d'activemq. Et le producteur est automatiquement ralenti lorsqu'il y a une forte charge. – Solo