Spring cloud AWS - 将消息发送到fifo队列

时间:2017-07-03 12:47:50

标签: amazon-sqs spring-cloud-aws

我正在使用spring-cloud-aws向SQS FIFO队列发送消息。

失败了

请求必须包含参数MessageGroupId

在spring-cloud-aws-messaging中,QueueMessagingTemplate似乎没有任何地方允许我设置这个必需的MessageGroupId。

目前是否有办法在此庄园中写入SQS FIFO队列,或者我是否必须直接使用amazons API?

2 个答案:

答案 0 :(得分:0)

由于QueueMessagingTemplate如何使用不支持以这种方式配置SendMessageRequest的QueueMessagingChannel,我不相信spring-cloud-aws的1.1.x版本可以支持FIFO。 / p>

检查https://github.com/spring-cloud/spring-cloud-aws/blob/master/spring-cloud-aws-messaging/src/main/java/org/springframework/cloud/aws/messaging/core/QueueMessageChannel.java#L78了解详情。

由于这个原因我打开了https://github.com/spring-cloud/spring-cloud-aws/issues/246,但不知道是否会添加支持。

我似乎也不能使用自定义QueueMessageTemplate;如果可以的话,这将是一个合理的解决方法。

答案 1 :(得分:0)

自2017年以来,Spring Cloud AWS支持FIFO队列,具体规定如下: Add Support for FIFO SQS Queues #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);
}