我正在使用 spring-cloud-aws 向 SQS FIFO 队列发送消息。
它失败了
请求必须包含参数 MessageGroupId
spring-cloud-aws-messaging 中的 QueueMessagingTemplate 上似乎没有任何地方允许我设置这个强制性 MessageGroupId。
目前有没有办法在这个庄园中写入 SQS FIFO 队列,或者我必须恢复到直接使用亚马逊 API 吗?
我正在使用 spring-cloud-aws 向 SQS FIFO 队列发送消息。
它失败了
请求必须包含参数 MessageGroupId
spring-cloud-aws-messaging 中的 QueueMessagingTemplate 上似乎没有任何地方允许我设置这个强制性 MessageGroupId。
目前有没有办法在这个庄园中写入 SQS FIFO 队列,或者我必须恢复到直接使用亚马逊 API 吗?
Spring Cloud AWS 自 2017 年起支持 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);
}
我不相信 spring-cloud-aws 的 1.1.x 版本可能支持 FIFO,因为QueueMessagingTemplate
使用QueueMessagingChannel
不支持以这种方式配置 SendMessageRequest 的方式。
出于这个原因,我已经打开了https://github.com/spring-cloud/spring-cloud-aws/issues/246,但不知道是否会添加支持。
看来我也不能使用自定义QueueMessageTemplate
;如果可以的话,这将是一个合理的解决方法。