2017-08-22 3 views
0

Wir verwenden @RabbitListener einfach in Ordnung, um eine Nachricht nach dem anderen zu verarbeiten und generierte E-Mails mit JavaMail zu einigen SMTP zu senden.Batch empfangen mit Spring AMPQ

Jetzt gibt es eine Anforderung zum Schließen der Verbindung zu SMTP nach einer bestimmten Anzahl von Nachrichten. Ich habe etwas über ChannelAwareMessageListener und manuelle Bestätigung gelesen. Auf diese Weise können Sie alle Batch-Nachrichten mit einer einzigen Bestätigung quittieren, aber ich muss in der Lage sein, nur einige Nachrichten zu lesen und dann nur diejenigen zu bestätigen, die erfolgreich an SMTP gesendet werden, die anderen müssen mit Buchstaben versehen sein.

Weitere Ideen zum Schließen der SMTP-Verbindung nach Anzahl der Nachrichten?

Antwort

1

Behalten Sie eine Liste zu den unack'd-Lieferungs-Tags bei, dann verwenden Sie channel.basicAck(goodTag, false) und basicReject(badTag, false), wenn Sie bereit sind.

Sie sollten das nur für den Listener-Thread tun.

+0

Ich muss ablehnen und nicht requeue so Einstellung 'defaultRequeueRejected' zu false sollte helfen, richtig? – Zveratko

+0

Sie haben gesagt, Sie möchten kontrollieren, wenn Sie ack/nack - diese Eigenschaft gilt nicht mit dem MANUAL ack-Modus. –

+0

Ich wollte einige ablehnen, um sie in die Warteschlange für tote Nachrichten zu verschieben – Zveratko