Как отправить пакетное сообщение в очередь sqs, используя apache camel - PullRequest
0 голосов
/ 12 июля 2020

У меня апи отдыхает в apache верблюде. Я написал такой код, чтобы отправить пакетное сообщение в sqs, используя apache camel, следуя их документации.

 .post("sqs-send-batch-message")
                    .route()
                    .process(new Processor(){
                        @Override
                        public void process(Exchange exchange) throws Exception {
                            String message = "Hello World";
                            exchange.getIn().setBody(message);
                        }
                        
                    })
                    .to("aws2-sqs://queueName?accessKey=insert&secretKey=insert&region=us-east-1&operation=sendBatchMessage")
                    .endRest()

Но это возвращает java.lang.NullPointerException. Именно так это было указано в их документации. Есть ли другой способ отправить пакетное сообщение в sqs, используя apache camel?

1 Ответ

0 голосов
/ 13 июля 2020

Как указано в документации, вам необходимо передать итерацию в качестве тела. Вот интеграционный тест: https://github.com/apache/camel/blob/master/components/camel-aws2-sqs/src/test/java/org/apache/camel/component/aws2/sqs/integration/SqsProducerBatchSendIntegrationTest.java

В качестве альтернативы вы можете напрямую передать SendBatchRequest Pojo в качестве тела: https://github.com/apache/camel/blob/master/components/camel-aws2-sqs/src/main/java/org/apache/camel/component/aws2/sqs/Sqs2Producer.java#L107

Это указано в документации: https://camel.apache.org/components/latest/aws2-sqs-component.html#_send_batch_message

Я не знаю, где вы читали об этом способе отправки пакетного сообщения. Не могли бы вы сообщить о проблеме, если документация где-то неверна? Спасибо.

...