gpt4 book ai didi

spring - AWS集成 Spring : Extend Visibility Timeout

转载 作者:行者123 更新时间:2023-12-02 11:43:42 26 4
gpt4 key购买 nike

是否可以延长正在传输的消息的可见时间。

参见:

http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/AboutVT.html

部分:更改消息的可见性超时。

http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/sqs/AmazonSQSClient.html#changeMessageVisibility-com.amazonaws.services.sqs.model.ChangeMessageVisibilityRequest-

总之,我希望能够延长正在运行的给定消息的第一组可见性超时。

例如,如果 15 秒过去了,我想将超时再延长 20 秒。上面的 java 文档中有更好的示例。

根据我对上面链接的理解,您可以在亚马逊方面执行此操作。

以下是我当前的设置;

  SqsMessageDrivenChannelAdapter adapter =
new SqsMessageDrivenChannelAdapter(queue);
adapter.setMessageDeletionPolicy(SqsMessageDeletionPolicy.ON_SUCCESS);
adapter.setMaxNumberOfMessages(1);
adapter.setSendTimeout(2000);
adapter.setVisibilityTimeout(200);
adapter.setWaitTimeOut(20);

是否可以延长此超时时间?

最佳答案

Spring Cloud AWS 从版本 2.0 开始支持此功能。在 SQS 监听器方法中注入(inject) Visiblity 参数即可解决问题:

  @SqsListener(value = "my-sqs-queue")
void onMessageReceived(@Payload String payload, Visibility visibility) {
...
var extension = visibility.extend(20);
...
}

请注意,extend 将异步工作并返回一个 Future。因此,如果您想进一步确定处理过程,消息的可见性确实在 AWS 方面得到了扩展,可以使用 extension.get() 阻止 Future 或查询 Future与extension.isDone()

关于spring - AWS集成 Spring : Extend Visibility Timeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38355551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com