我正在尝试开发一个 SQS 侦听器,它在后台运行,并在新消息到达时从 AWS SQS 读取消息,并且它永远不应该删除该消息,因为将有一个单独的过程来删除消息。
这是一个独立的应用程序,刚刚开始开发。但无法进一步进行,因为基本的事情不起作用。我确信我错过了一些东西。我正在使用spring-cloud-aws-messaging (版本:1.2.0.BUILD-SNAPSHOT)。
这是一个非常简单的独立应用程序,具有以下文件: 一个 spring 配置文件:application-context.xml(内容已粘贴在上面) 一个 SQS 监听器:SBSQSMessageListener(内容已粘贴在上面) 一个正在加载 application-context.xml 的主程序&创建ApplicationContext
我的 Spring 配置文件:
<aws-context:context-region region="us-west-2"/>
<aws-context:context-credentials>
<aws-context:simple-credentials access-key="xxxxxxx" secret-key="xxxxxxxxxxxxx" />
</aws-context:context-credentials>
<aws-messaging:queue-messaging-template id="queueMessagingTemplate" />
<aws-messaging:annotation-driven-queue-listener task-executor="simpleTaskExecutor" />
<bean id="simpleTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="4" />
<property name="maxPoolSize" value="10" />
<property name="queueCapacity" value="1" />
<property name="WaitForTasksToCompleteOnShutdown" value="true" />
</bean>
Run Code Online (Sandbox Code Playgroud)
我的 SQSListener:
package sb.aws.sqs.listener;
import java.util.concurrent.ExecutionException;
import org.apache.log4j.Logger;
import org.springframework.cloud.aws.messaging.config.annotation.EnableSqs;
import org.springframework.cloud.aws.messaging.listener.annotation.SqsListener;
import org.springframework.cloud.aws.messaging.listener.Acknowledgment;
import org.springframework.cloud.aws.messaging.listener.SqsMessageDeletionPolicy;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.stereotype.Component;
@Component
@EnableSqs
public class …Run Code Online (Sandbox Code Playgroud)