Как я могу читать сообщения Amazon SQS с помощью прослушивателя? - PullRequest
1 голос
/ 06 июня 2019

Я хочу поставить в очередь сообщения, используя Amazon SQS, но @SqsListener, похоже, не читает сообщения.

Я пытался читать сообщения с ScheduledThreadPoolExecutor, но этотолько чтение с запросом GET.Если в очереди нет сообщений или в полете только одно сообщение, исполнитель останавливается, и мне следует его повторно запустить.Также, когда я добавляю новые сообщения в очередь, исполнитель не запускается автоматически.Именно поэтому я добавил слушателя, чтобы он читал сообщения, когда в очереди их было, и просто отдыхал, когда их нет.

Слушатель еще не работает и даже не работаетбросать исключения.Вот кодМожете ли вы найти, что я сделал не так здесь?

@Configuration
public class SqsConfig {
    @Value("${amazon.s3.region}")
    private String region;

    @Value("${amazon.s3.accessKey}")
    private String awsAccessKey;

    @Value("${amazon.s3.secretKey}")
    private String awsSecretKey;

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

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

@RestController
@RequestMapping("/sqs")
public class SQSController {
    private static final Logger LOG = LoggerFactory.getLogger(SQSController.class);

    @Autowired
    private QueueMessagingTemplate queueMessagingTemplate;
    @Value("${amazon.sqs.standard}")
    private String standard;

    @PostMapping
    public void sendMessage(@RequestParam String m) {
        queueMessagingTemplate.send(standard, MessageBuilder.withPayload(m).build());
    }

    @SqsListener("my_sqs_name")
    public void listener(String message) {
        LOG.info("MY MESSAGE " + message);
    }
}

Слушатель должен читать и удалять сообщения из консоли, но пока это не так.

...