in src/main/java/com/awsblog/queueing/sdk/QueueSdkClient.java [222:268]
public DLQResult getDLQStats() {
long startTime = System.currentTimeMillis();
int totalDLQSize = 0;
Map<String,AttributeValue> exclusiveStartKey = null;
Map<String,String> names = new HashMap<>();
names.put("#DLQ", "DLQ");
Map<String,AttributeValue> values = new HashMap<>();
values.put(":one", new AttributeValue().withN("1"));
List<String> listBANs = new ArrayList<>();
do {
QueryRequest queryRequest = new QueryRequest()
.withProjectionExpression("id, DLQ, system_info")
.withIndexName(Constants.DLQ_QUEUEING_INDEX_NAME)
.withTableName(this.actualTableName)
.withExpressionAttributeNames(names)
.withKeyConditionExpression("#DLQ = :one")
.withLimit(250)
.withExpressionAttributeValues(values);
queryRequest.withExclusiveStartKey(exclusiveStartKey);
QueryResult queryResult = this.dynamoDB.query(queryRequest);
exclusiveStartKey = queryResult.getLastEvaluatedKey();
for(Map<String,AttributeValue> itemMap : queryResult.getItems()) {
++totalDLQSize;
if (listBANs.size() < 100) listBANs.add(itemMap.get("id").getS());
}
} while (exclusiveStartKey != null);
DLQResult result = new DLQResult();
result.setFirst100IDsInQueue(listBANs);
result.setTotalRecordsInQueue(totalDLQSize);
return result;
}