Не удалось прочитать JSON в Spring Cloud Stream с тестом Кафки - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть простое приложение, которое получает сообщение и пишет в другую тему, используя весенний облачный поток и кафку. Я пытаюсь написать модульный тест согласно некоторому учебнику, но при отправке сообщения я получаю сообщение об ошибке. Согласно сообщению, он не может прочитать JSON.

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ApplicationTests {

    @Autowired
    private Processor processor;

    @Autowired
    private MessageCollector messageCollector;


    @Test
    @SuppressWarnings("unchecked")
    public void testWriting() {

        MyRecord myRecord= getDummyRecord(); // getting dummy MyRecord object

        Message<MyRecord> message = MessageBuilder.withPayload(myRecord).setHeader(KafkaHeaders.MESSAGE_KEY, getDummyKey()).build();
        processor.input().send(message);

        Message<MyRecord> receivedMessage = (Message<MyRecord>) messageCollector.forChannel(processor.output()).poll();


    }

}

Ошибка, которую я получаю:

Не удалось прочитать JSON: нераспознанный токен WeatherRecordRaw: ожидал ('true ',' false 'или' null ') at [Source: (String) "MyRecord (....)

Как это исправить, у меня нет проблем в приложении, тольков тесте.

1 Ответ

0 голосов
/ 30 сентября 2019

Вы отправляете прямо на входной канал;связыватель получает данные из источника (RabbitMQ, Kafka и т. д.) и отправляет их в канал для преобразования.

Входной канал ожидает получения JSON, а не POJO;затем он преобразует JSON обратно в POJO.

Используйте Джексона ObjectMapper для преобразования POJO в byte[], содержащее представление JSON.

...