in src/main/java/com/amazonaws/services/sqs/AmazonSQSVirtualQueuesClient.java [289:310]
private void dispatchMessage(Message message) {
MessageAttributeValue messageAttributeValue = message.getMessageAttributes().get(VIRTUAL_QUEUE_NAME_ATTRIBUTE);
// Case where a message was sent with missing attribute __AmazonSQSVirtualQueuesClient.QueueName
if (messageAttributeValue == null) {
orphanedMessageHandler.accept(queueUrl, message);
return;
}
String queueName = messageAttributeValue.getStringValue();
VirtualQueue virtualQueue = virtualQueues.get(queueName);
if (virtualQueue != null) {
messageHandlerOptional.map(messageHandler -> {
messageHandler.accept(virtualQueue.getID().getQueueUrl(), message);
virtualQueue.heartbeat();
return null;
}).orElseGet(() -> {
virtualQueue.receiveBuffer.deliverMessages(Collections.singletonList(message), queueUrl, null);
return null;
});
} else {
orphanedMessageHandler.accept(queueName, message);
}
}