我有一个简单的 Spring Boot 服务,它使用 JMSTemplate 侦听 AWS SQS 队列。当消息得到正确处理时,一切都按预期工作。
我正在使用 CLIENT_ACKNOWLEDGE,因此在处理过程中抛出异常时,会再次收到消息。但是,SQS 队列上的默认可见性超时设置将被忽略,并且会立即再次接收消息。
SQS 队列配置了 30 秒的默认可见性超时,并且在将消息放入 DLQ 之前接收的重新驱动策略为 20。
我已禁用该服务并使用 SQS 控制台来验证是否正确设置了默认可见性超时。我还尝试将 JMS 消息添加到方法签名并执行手动验证。
这是 JMS 配置的代码:
@Configuration
@EnableJms
class JmsConfig
{
@Bean
@Conditional(AWSEnvironmentCondition.class)
public SQSConnectionFactory connectionFactory(@Value("${AWS_REGION}") String awsRegion)
{
return new SQSConnectionFactory(
new ProviderConfiguration(),
AmazonSQSClientBuilder.standard()
.withRegion(Regions.fromName(awsRegion))
.withCredentials(new DefaultAWSCredentialsProviderChain())
);
}
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(ConnectionFactory connectionFactory)
{
DefaultJmsListenerContainerFactory factory =
new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setDestinationResolver(new DynamicDestinationResolver());
factory.setConcurrency("3-10");
factory.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
factory.setErrorHandler(defaultErrorHandler());
return factory;
}
@Bean
public ErrorHandler defaultErrorHandler()
{
return new ErrorHandler()
{ …
Run Code Online (Sandbox Code Playgroud) 我们正在将 SonarQube 服务器和数据库迁移到 AWS,我希望能够将设置和配置从现有服务器复制到 AWS 中的新服务器。质量配置文件具有备份操作,因此易于移动。质量门是否有类似的东西?