J'utilise ActiveMQ dans un programme .Net et je suis inondé d'événements-messages. En bref, quand j'obtiens un événement de file d'attente 'onMessage (IMessage receivedMsg)' je place le message dans une file d'attente interne à partir de laquelle les threads X font leur chose. Au début, j'ai eu: 'AcknowledgementMode.AutoAcknowledge' lors de la création de la session, donc je devine que tous les messages dans la file d'attente ont été aspirés et mis dans la file d'attente de mémoire (ce qui est risqué car tout est perdu). Alors j'ai utilisé: 'AcknowledgementMode.ClientAcknowledge' lors de la création de la session, et quand un worker était prêt avec le message, il appelle la méthode 'commit()' sur le message. Cependant, tous les messages sont toujours aspirés par la file d'attente.Comment puis-je limiter la quantité de messages provenant d'ActiveMQ dans mon application C#?
Comment puis-je le configurer que SEULEMENT un nombre X de messages sont en cours de traitement ou sont dans une file d'attente interne, et que tout n'est pas «téléchargé» tout de suite?
Bien que je n'ai jamais touché ActiveMQ - ne pouvez-vous pas retourner ceci: Configurer N threads avec les écouteurs ActiveMQ, et traiter les messages dans l'événement listen? –
@will hughes: mon programme entier est écrit de manière asynchrone. Ainsi, même l'accès DB est effectué de manière asynchrone avec des rappels. Donc je ne peux pas rester dans l'événement. – Toad