@@ -69,7 +69,7 @@ public SqsWorker(final SqsClient sqsClient,
69
69
@ Override
70
70
public void run () {
71
71
72
- while (true ) {
72
+ while (true ) {
73
73
int messagesProcessed = 0 ;
74
74
try {
75
75
messagesProcessed = processSqsMessages ();
@@ -152,26 +152,35 @@ private ParsedMessage convertS3EventMessages(final Message message) {
152
152
}
153
153
154
154
private List <DeleteMessageBatchRequestEntry > processS3EventNotificationRecords (final Collection <ParsedMessage > s3EventNotificationRecords ) {
155
- List <DeleteMessageBatchRequestEntry > deleteMessageBatchRequestEntryCollection = new ArrayList <>();
155
+ final List <DeleteMessageBatchRequestEntry > deleteMessageBatchRequestEntryCollection = new ArrayList <>();
156
+ final List <ParsedMessage > parsedMessagesToRead = new ArrayList <>();
157
+
156
158
for (ParsedMessage parsedMessage : s3EventNotificationRecords ) {
157
159
if (parsedMessage .failedParsing ) {
158
160
sqsMessagesFailedCounter .increment ();
159
161
if (s3SourceConfig .getOnErrorOption ().equals (OnErrorOption .DELETE_MESSAGES )) {
160
162
deleteMessageBatchRequestEntryCollection .add (buildDeleteMessageBatchRequestEntry (parsedMessage .message ));
161
163
}
162
- }
163
- else {
164
+ } else {
164
165
final List <S3EventNotification .S3EventNotificationRecord > notificationRecords = parsedMessage .notificationRecords ;
165
- if (!notificationRecords .isEmpty () && isEventNameCreated (notificationRecords .get (0 ))) {
166
- final S3ObjectReference s3ObjectReference = populateS3Reference (notificationRecords .get (0 ));
167
- final Optional <DeleteMessageBatchRequestEntry > deleteMessageBatchRequestEntry = processS3Object (parsedMessage , s3ObjectReference );
168
- deleteMessageBatchRequestEntry .ifPresent (deleteMessageBatchRequestEntryCollection ::add );
166
+ if (!notificationRecords .isEmpty () && isEventNameCreated (notificationRecords .get (0 ))) {
167
+ parsedMessagesToRead .add (parsedMessage );
169
168
} else {
170
169
// Add SQS message to delete collection if the eventName is not ObjectCreated
171
170
deleteMessageBatchRequestEntryCollection .add (buildDeleteMessageBatchRequestEntry (parsedMessage .message ));
172
171
}
173
172
}
174
173
}
174
+
175
+ LOG .info ("Received {} messages from SQS. Read {} messages from S3." , s3EventNotificationRecords .size (), parsedMessagesToRead .size ());
176
+
177
+ for (ParsedMessage parsedMessage : parsedMessagesToRead ) {
178
+ final List <S3EventNotification .S3EventNotificationRecord > notificationRecords = parsedMessage .notificationRecords ;
179
+ final S3ObjectReference s3ObjectReference = populateS3Reference (notificationRecords .get (0 ));
180
+ final Optional <DeleteMessageBatchRequestEntry > deleteMessageBatchRequestEntry = processS3Object (parsedMessage , s3ObjectReference );
181
+ deleteMessageBatchRequestEntry .ifPresent (deleteMessageBatchRequestEntryCollection ::add );
182
+ }
183
+
175
184
return deleteMessageBatchRequestEntryCollection ;
176
185
}
177
186
@@ -194,6 +203,7 @@ private Optional<DeleteMessageBatchRequestEntry> processS3Object(
194
203
}
195
204
196
205
private void deleteSqsMessages (final List <DeleteMessageBatchRequestEntry > deleteMessageBatchRequestEntryCollection ) {
206
+ LOG .debug ("Deleting {} messages from SQS." , deleteMessageBatchRequestEntryCollection .size ());
197
207
final DeleteMessageBatchRequest deleteMessageBatchRequest = buildDeleteMessageBatchRequest (deleteMessageBatchRequestEntryCollection );
198
208
final DeleteMessageBatchResponse deleteMessageBatchResponse = sqsClient .deleteMessageBatch (deleteMessageBatchRequest );
199
209
if (deleteMessageBatchResponse .hasSuccessful ()) {
@@ -224,7 +234,7 @@ private boolean isEventNameCreated(final S3EventNotification.S3EventNotification
224
234
private S3ObjectReference populateS3Reference (final S3EventNotification .S3EventNotificationRecord s3EventNotificationRecord ) {
225
235
final S3EventNotification .S3Entity s3Entity = s3EventNotificationRecord .getS3 ();
226
236
return S3ObjectReference .bucketAndKey (s3Entity .getBucket ().getName (),
227
- s3Entity .getObject ().getUrlDecodedKey ())
237
+ s3Entity .getObject ().getUrlDecodedKey ())
228
238
.build ();
229
239
}
230
240
0 commit comments