Параметр Schema.AUTO_PRODUCE_BYTES
полезен для передачи данных от производителя в Pulsar topi c, который имеет схему, поскольку он гарантирует, что отправленное сообщение совместимо со схемой topi c. Однако я не вижу, где вы указали схему для topi c.
Топи c автоматически назначается схема при подключении типизированного производителя или потребителя, например,
Producer producer = client.newProducer(JSONSchema.of(SensorReading.class))
.topic("sensor-data")
.sendTimeout(3, TimeUnit.SECONDS)
.create();
Но вы заявили, что не можете этого сделать, потому что «не можете» жесткий код POJO ". Поэтому единственная другая возможность назначить схему для topi c (чтобы обеспечить совместимость со схемой сообщений) - это использовать вызовы REST API для ручного управления схемой.
Исходя из вашей схемы, ваш файл определения схемы будет выглядеть примерно так:
{
"type": "JSON",
"schema": "{\"type\":\"record\",\"name\":\"Data\",\"namespace\":\"com.iot.test\",\"fields\":[{\"name\":\"y\",\"type\":[\"null\",\"string\"],\"default\":null}}",
"properties": {}
}
HTH