весеннее облако aws аннотированный управляемый слушатель очереди - PullRequest
0 голосов
/ 22 сентября 2018

Я пытаюсь написать веб-приложение, которое использует 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 и весенней загрузке, есть ли что-то, что я делаю неправильно

1 Ответ

0 голосов
/ 01 октября 2018

Мне просто нужно было добавить аннотацию @Component в класс AWSSQSListner, и это сработало, также не требуется XML-компонент AWS

...