Слушатель Spring SQS - Завершение сразу после запуска - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь построить Потребителя SQS.Ниже приведен код, который я использовал.Однако приложение закрывается немедленно и не использует сообщения, которые я отправляю в очередь.Однако, когда я использую AWS Java SDK, я могу использовать сообщения.

@SpringBootApplication
public class QueueConsumerApplication {

    @Value("${proxy.host}")
    private String proxyHost;

    @Value("${proxy.port}")
    private int proxyPort;

    @Value("${sqs.url:<sqsurl>/data-replication.fifo}")
    private String amazonSqsEndpoint;

    public static void main(String[] args) {
        SpringApplication.run(QueueConsumerApplication.class, args);
    }

    @Bean
    public AmazonSQSAsync amazonSQSAsyncClient()
    {

        AmazonSQSAsync amazonSQSAsyncClient = AmazonSQSAsyncClientBuilder.standard()
                .withCredentials(getProfileCredentialsProvider())
                .withClientConfiguration(getClientConfiguration())
                .withRegion(Regions.US_EAST_1)
                .build();



        return amazonSQSAsyncClient;
    }

    @Bean
    public SimpleMessageListenerContainerFactory simpleMessageListenerContainerFactory() {
        SimpleMessageListenerContainerFactory msgListenerContainerFactory = new SimpleMessageListenerContainerFactory();
        msgListenerContainerFactory.setAmazonSqs(amazonSQSAsyncClient());
        return msgListenerContainerFactory;
    }

    @Bean
    public QueueMessagingTemplate queueMessagingTemplate(AmazonSQSAsync amazonSqs) {
        return new QueueMessagingTemplate(amazonSQSAsyncClient());
    }


    public ProfileCredentialsProvider getProfileCredentialsProvider(){
        ProfileCredentialsProvider credentialsProvider = new ProfileCredentialsProvider("Dev_Developer");
        try {
            credentialsProvider.getCredentials();
            System.out.println(credentialsProvider.getCredentials().getAWSAccessKeyId());
            System.out.println(credentialsProvider.getCredentials().getAWSSecretKey());

        } catch (Exception e) {
            throw new AmazonClientException(
                    "Cannot load the credentials from the credential profiles file. " +
                            "Please make sure that your credentials file is at the correct " +
                            "location (~/.aws/credentials), and is in valid format.",
                    e);
        }
        return credentialsProvider;
    }


    private ClientConfiguration getClientConfiguration(){
        ClientConfiguration config = new ClientConfiguration();
        config.setProtocol(Protocol.HTTPS);
        config.setProxyHost(proxyHost);
        config.setProxyPort(proxyPort);
        return config;
    }
}

Слушатель

@Component
public class QueueListener {

    @SqsListener(value = "data-replication.fifo", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
    public void receive(String message)
    {
        System.out.println("message: " + message);
    }

}
...