Ich nehme Nachrichten aus der Amazon SQS-Warteschlange. Ich habe Tausende von Nachrichten in der Warteschlange. Wenn ich die Anwendung starte (geschrieben in Java mit Springframework), fängt es an, Nachrichten von der Warteschlange abzufragen und nach dem Empfang von 500 Nachrichten stoppt es. Wenn ich die Anwendung erneut starte, wird es weitere 500 Nachrichten verbrauchen.
Mein Code ist wie ...
Verbindungsfactory
%Vor%Listener
%Vor%Ist alles, was ich in Amazon Warteschlange oder in Verbindung Factory-Bean konfigurieren muss? Danke: -)
Aktualisiert : Thread-Dump hinzugefügt
Während die Anwendung Nachrichten verbraucht
DefaultMessageListenerContainer im Thread-Dump ist wie
ConsumerPrefetchThread im Thread-Dump ist wie
Wenn die Anwendung keine Nachrichten mehr empfängt
ConsumerPrefetchThread im Thread-Dump ist wie
ConsumerPrefetchThread im Thread-Dump ist wie
Sieht nach einer Art Poolschwäche in Ihrem Code aus ...
%Vor% Der Container-Thread bleibt hängen und versucht eine Sitzung von PooledConnection
zu erhalten.
Vielleicht geben Sie keine Sitzungen in den Pool zurück?
Erwägen Sie die Verwendung eines JmsTemplate
anstelle Ihres eigenen Codes, um mit JMS zu sprechen. Es vermeidet solche Probleme.
Tags und Links java amazon-sqs messaging aws-sdk spring-integration