SQS消息确认

我的Sring Boot应用程序侦听Amazon SQS队列。现在,我需要实现正确的消息确认-

我需要接收一条消息,只有在成功后才需要确认消息(从队列中删除消息),然后再执行一些业务逻辑。例如,如果我的业务逻辑出错,则必须重新排队该消息。

这是我的SQS配置:

    /**

* AWS Credentials Bean

*/

@Bean

public AWSCredentials awsCredentials() {

return new BasicAWSCredentials(accessKey, secretAccessKey);

}

/**

* AWS Client Bean

*/

@Bean

public AmazonSQS amazonSQSAsyncClient() {

AmazonSQS sqsClient = new AmazonSQSClient(awsCredentials());

sqsClient.setRegion(Region.getRegion(Regions.US_EAST_1));

return sqsClient;

}

/**

* AWS Connection Factory

*/

@Bean

public SQSConnectionFactory connectionFactory() {

SQSConnectionFactory.Builder factoryBuilder = new SQSConnectionFactory.Builder(

Region.getRegion(Regions.US_EAST_1));

factoryBuilder.setAwsCredentialsProvider(new AWSCredentialsProvider() {

@Override

public AWSCredentials getCredentials() {

return awsCredentials();

}

@Override

public void refresh() {

}

});

return factoryBuilder.build();

}

/**

* Registering QueueListener for queueName

*/

@Bean

public DefaultMessageListenerContainer defaultMessageListenerContainer() {

DefaultMessageListenerContainer messageListenerContainer = new DefaultMessageListenerContainer();

messageListenerContainer.setConnectionFactory(connectionFactory());

messageListenerContainer.setMessageListener(new MessageListenerAdapter(new MyQueueListener()));

messageListenerContainer.setDestinationName(queueName);

return messageListenerContainer;

}

我的队列侦听器:

public class MyQueueListener {

public void handleMessage(String messageContent) throws JMSException {

//do some job

//TODO: ack the message

}

}

现在,我不知道如何确认来自听众的消息。

回答:

通常DefaultMessageListenerContainerhandleMessage自动执行之前或之后确认消息。因此,您无需执行任何操作。

但推荐的方法DefaultMessageListenerContainer是使用事务而不是客户端ack模式。不知道Amazon SQS是否具有此类选项。

以上是 SQS消息确认 的全部内容, 来源链接: utcz.com/qa/427875.html

回到顶部