Amazon SQS Java SDK stoppt nach dem Verbrauch von 500 Nachrichten

8

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

%Vor%


ConsumerPrefetchThread im Thread-Dump ist wie

%Vor%

Wenn die Anwendung keine Nachrichten mehr empfängt
ConsumerPrefetchThread im Thread-Dump ist wie

%Vor%


ConsumerPrefetchThread im Thread-Dump ist wie

%Vor%     
Piyush 20.07.2015, 20:23
quelle

1 Antwort

3

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.

    
Gary Russell 21.07.2015, 13:13
quelle