Spring Cloud AWS - отправка сообщения в очередь fifo

Я использую spring-cloud-aws для отправки сообщения в очередь SQS FIFO.

Это не срабатывает

Запрос должен содержать параметр MessageGroupId

Кажется, что в шаблоне QueueMessagingTemplate в spring-cloud-aws-messaging нет места, которое позволяет мне установить этот обязательный MessageGroupId.

Есть ли в настоящее время способ записи в очередь SQS FIFO в этом поместье, или мне придется вернуться к прямому использованию API Amazon?


person Rich Croft    schedule 03.07.2017    source источник


Ответы (2)


Spring Cloud AWS поддерживает очереди FIFO с 2017 года в соответствии с: Добавить поддержку FIFO Очереди SQS № 252

Вам просто нужно добавить два обязательных параметра (messageGroupId и messageDeduplicationId), как в примере ниже:

public void send(String topicName, Object message, String messageGroupId, String messageDeduplicationId) throws MessagingException {
    Map<String, Object> headers = new HashMap<>();
    headers.put("message-group-id", messageGroupId);
    headers.put("message-deduplication-id", messageDeduplicationId);
    messagingTemplate.convertAndSend(topicName, message, headers);
}
person otavaresgabriel    schedule 26.11.2019
comment
Ты прав. Я только что протестировал Spring Cloud AWS 2.2.0.RELEASE, и вам просто нужно передать заголовки message-group-id и message-deduplication-id, как вы сказали. - person Felipe Desiderati; 28.01.2020

Я не верю, что поддержка FIFO возможна с версиями 1.1.x spring-cloud-aws из-за того, что QueueMessagingTemplate использует QueueMessagingChannel, который не поддерживает настройку SendMessageRequest таким образом.

Изучите https://github.com/spring-cloud/spring-cloud-aws/blob/master/spring-cloud-aws-messaging/src/main/java/org/springframework/cloud/aws/.сообщения/core/QueueMessageChannel.java#L78, чтобы получить подробную информацию.

Я открыл https://github.com/spring-cloud/spring-cloud-aws/issues/246 по этой причине, хотя понятия не имею, будет ли добавлена ​​поддержка.

Также не похоже, что я могу использовать пользовательский QueueMessageTemplate; это было бы разумным решением, если бы я мог.

person Louis Alexander    schedule 13.07.2017
comment
Ура, пока я использовал клиент AmazonSQS для отправки, но продолжал использовать весенний api для слушателей - person Rich Croft; 14.07.2017