工厂方法'stackResourceRegistryFactoryBean'抛出异常;嵌套的异常是java.lang.IllegalArgumentException:未定义有效的实例ID

时间:2020-02-26 06:28:51

标签: java amazon-web-services spring-boot spring-mvc amazon-sqs

我正在尝试创建一个Spring Boot应用程序,该应用程序发送和接收消息到Queue。我正在使用AWS SQS进行排队。但是,在运行我的应用程序时,我遇到了错误,下面给出了我的代码。

enter image description here

SQSConfig.java

package com.sqs.Config;

import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.sqs.AmazonSQSAsync;
import com.amazonaws.services.sqs.AmazonSQSAsyncClientBuilder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.aws.messaging.core.QueueMessagingTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SQSConfig {

    @Value("${cloud.aws.region.static}")
    private String region;

    @Value("${cloud.aws.credentials.access-key}")
    private String awsAccessKey;

    @Value("${cloud.aws.credentials.secret-key}")
    private String awsSecretKey;

    @Bean
    public QueueMessagingTemplate queueMessagingTemplate() {
        return new QueueMessagingTemplate(amazonSQSAsync());
    }

    public AmazonSQSAsync amazonSQSAsync() {
        return AmazonSQSAsyncClientBuilder.standard().withRegion(region)
                .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(awsAccessKey, awsSecretKey)))
                .build();
    }
}

SQSController.java

package com.sqs.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.aws.messaging.core.QueueMessagingTemplate;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/sqs")
public class SQSController {

    private static final Logger LOG = LoggerFactory.getLogger(SQSController.class);

    @Autowired
    private QueueMessagingTemplate queueMessagingTemplate;

    @Value("${cloud.aws.end-point.uri}")
    private String sqsEndPointURL;

    @GetMapping
    public void sendMessage() {
        queueMessagingTemplate.send(sqsEndPointURL, MessageBuilder.withPayload("My first queue message").build());
    }
}

application.properties

server.port=8080

cloud.aws.region.static=
cloud.aws.region.auto=false
cloud.aws.credentials.access-key=
cloud.aws.credentials.secret-key=
cloud.aws.end-point.uri=

我找不到我犯了什么错误。需要解决方案。

谢谢。

0 个答案:

没有答案