【问题标题】:Could not read JSON in Spring Cloud Stream With Kafka Test无法使用 Kafka 测试在 Spring Cloud Stream 中读取 JSON
【发布时间】:2019-09-30 08:58:13
【问题描述】:

我有一个简单的应用程序,它使用 spring cloud stream 和 kafka 接收消息并写入另一个主题。我正在尝试根据一些教程编写单元测试,但在发送消息时出现错误。根据消息,它无法读取 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”) 在 [Source: (String)"MyRecord(....)

我该如何解决这个问题,我在应用中没有问题,只有在测试中。

【问题讨论】:

  • 你需要展示myRecord的样子。
  • 你到底是什么意思?这是一个简单的 POJO 类。

标签: apache-kafka apache-kafka-streams spring-cloud-stream


【解决方案1】:

您正在直接发送到输入通道; binder 从源(RabbitMQ、Kafka 等)获取数据并将其发送到通道进行转换。

输入通道期望得到 JSON,而不是 POJO;然后它将 JSON 转换回 POJO。

使用 Jackson ObjectMapper 将 POJO 转换为包含 JSON 表示的 byte[]

【讨论】:

  • 非常感谢!!非常严重的错误!))你救了我
  • 你需要使用输出流而不是输入
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
  • 2017-11-24
  • 1970-01-01
  • 2018-04-28
  • 2020-05-18
  • 2023-04-05
  • 2018-08-29
相关资源
最近更新 更多