我已经通过以下教程将 SQS 与 JMS 集成在一起
配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<int-jms:message-driven-channel-adapter
id="vboProofOfDeliveryInbound"
destination-name="${queueName}"
channel="vboProofOfDeliveryActivator" concurrent-consumers="10"
acknowledge="client" max-concurrent-consumers="20"
connection-factory="awsConnectionFactory" />
<int:service-activator input-channel="vboProofOfDeliveryActivator"
ref="vboProofOfDeliveryActivator" method="vboProofOfDelivery" />
<bean id="basicAWSCredential"
class="com.amazonaws.auth.BasicAWSCredentials" primary="true">
<constructor-arg value="${awsAccessKey}" />
<constructor-arg value="${awsSecretKey}" />
</bean>
<bean id="AWSCredentialProvider"
class="com.amazonaws.auth.AWSStaticCredentialsProvider" primary="true">
<constructor-arg index="0" ref="basicAWSCredential"></constructor-arg>
</bean>
<bean id="AWSClientBuilder"
class="com.amazonaws.services.sqs.AmazonSQSClientBuilder"
factory-method="standard" primary="true">
<property name="region" value="${awsRegion}" />
<property name="credentials" ref="AWSCredentialProvider" />
</bean>
<bean id="SQSProviderConfiguration"
class="com.amazon.sqs.javamessaging.ProviderConfiguration">
<property name="numberOfMessagesToPrefetch" value="20" />
</bean>
<bean id="awsConnectionFactory"
class="com.amazon.sqs.javamessaging.SQSConnectionFactory">
<constructor-arg ref="SQSProviderConfiguration" />
<constructor-arg ref="AWSClientBuilder" />
</bean>
现在我需要删除队列中的 SQS 消息,只有那些被处理了。 当我通过 JMS 接收消息时,一旦消息得到处理,我需要将其连接到 AWS SQS 队列并删除已处理的特定消息。
用于删除:
for (Message m : messages) {
sqs.deleteMessage(queueUrl, m.getReceiptHandle());
}
问题: