从 JMS java 中删除 AWS SQS 消息

时间:2021-03-31 08:38:12

标签: java amazon-sqs

我已经通过以下教程将 SQS 与 JMS 集成在一起

https://docs.amazonaws.cn/en_us/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-jms-code-examples.html#example-synchronous-message-receiver

配置:

 <?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 队列并删除已处理的特定消息。

用于删除:

https://docs.amazonaws.cn/en_us/sdk-for-java/v1/developer-guide/examples-sqs-messages.html#sqs-messages-delete

for (Message m : messages) {
sqs.deleteMessage(queueUrl, m.getReceiptHandle());
}

问题:

  1. 由于我已将 SQS 队列与 JMS 集成,我将如何在 AWS SQS 中删除已处理的消息,其中 JMS 正在处理?
  2. 有什么办法可以从 JMS 中删除 AWS 消息?

0 个答案:

没有答案