Почему моя лямбда-функция не может принимать сообщения, отправленные SQS в AWS? - PullRequest
0 голосов
/ 17 марта 2020

Я использую AWS лямбда-функцию для приема сообщений, полученных на AWS SQS. Лямбда-функция будет далее вызывать мой сервис, но сейчас я пытался получать сообщения, отправленные в очередь SQS. Я сделал стандартную очередь в SQS и лямбда-функцию в Java. Я сделал новый лямбда-проект в Eclipse IDE, и это моя функция:

package com.amazonaws.lambda.demo;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;

public class LambdaFunctionHandler implements RequestHandler<String, String> {

    @Override
    public String handleRequest(String input, Context context) {
        context.getLogger().log("Input: " + input);
        return (String) input;
    }
}

Файл не показывает никаких ошибок. Я экспортировал проект как файл .jar и загрузил файл jar в свою функцию лямбды. Я также указал обработчик в моей лямбда-функции (packageName.className). Если я проверяю лямбда-функцию, она хорошо выполнялась, но когда я отправляю сообщение в SQS, оно увеличивает число сообщений в message flight, которое я прочитал, и являются сообщениями, не потребляемыми потребителем, что в моем случае является лямбда-выражением.

enter image description here enter image description here

Пожалуйста, дайте мне знать, если что-то еще нужно.

1 Ответ

0 голосов
/ 18 марта 2020

Amazon не десериализует строки, поэтому, когда я использовал Map в качестве входных данных, он работал нормально.

public String handleRequest(Map<String,Object> input, Context context) {
    context.getLogger().log("Your Input is: " +input);
    System.out.println(input);
    return  "Executed Successfully";
}

Я прочитал это из решения Лайонела Порта . Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...