我正在使用spring-cloud-aws向SQS FIFO队列发送消息。
失败了
请求必须包含参数MessageGroupId
在spring-cloud-aws-messaging中,QueueMessagingTemplate似乎没有任何地方允许我设置这个必需的MessageGroupId。
目前是否有办法在此庄园中写入SQS FIFO队列,或者我是否必须直接使用amazons API?
答案 0 :(得分:0)
由于QueueMessagingTemplate
如何使用不支持以这种方式配置SendMessageRequest的QueueMessagingChannel
,我不相信spring-cloud-aws的1.1.x版本可以支持FIFO。 / p>
由于这个原因我打开了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);
}