Весеннее облако aws аннотированный управляемый слушатель очереди
Я пытаюсь написать веб-приложение, которое использует AWS SQS, используя Spring Cloud AWS-обработчик запросов на основе аннотаций, вот как выглядит мой код:
XML AWS Beans:
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aws-context="http://www.springframework.org/schema/cloud/aws/context"
xmlns:aws-messaging="http://www.springframework.org/schema/cloud/aws/messaging"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/cloud/aws/context
http://www.springframework.org/schema/cloud/aws/context/spring-cloud-aws-context.xsd
http://www.springframework.org/schema/cloud/aws/messaging
http://www.springframework.org/schema/cloud/aws/messaging/spring-cloud-aws-messaging">
<!-- Define global credentials for all the AWS clients -->
<aws-context:context-credentials>
<aws-context:instance-profile-credentials/>
<aws-context:simple-credentials access-key="${accessKey:}"
secret-key="${secretKey:}"/>
</aws-context:context-credentials>
<!-- Define global region -->
<aws-context:context-region region="EU_WEST_1"/>
<!-- Cloud Formation Stack -->
<aws-context:stack-configuration stack-name="StackName"/>
<aws-messaging:annotation-driven-queue-listener />
</beans>
Затем я написал этот класс, который имеет метод с аннотацией SqsListener, который выводит привет на консоль:
package com.example.demo;
import org.springframework.cloud.aws.messaging.listener.annotation.SqsListener;
public class AWSSQSListner {
@SqsListener("queue-name")
public void queueListener(Person person) {
System.out.print("\"Hello\"");
}
}
это мой файл сборки gradle:
Gradle build file:
buildscript {
ext {
springBootVersion = '2.0.5.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
ext {
springCloudVersion = 'Finchley.SR1'
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web-services')
compile('org.springframework.cloud:spring-cloud-starter-aws')
compile('org.springframework.cloud:spring-cloud-starter-aws-messaging')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
но когда я запускаю приложение, ничего не происходит, я новичок в Java и Spring Boot, есть ли что-то, что я делаю неправильно
1 ответ
Решение
Мне просто нужно было добавить аннотацию @Component в класс AWSSQSListner, и это сработало, также нет необходимости в компоненте XML AWS