GitHub user frankjkelly added a comment to the discussion: JSONSchema should works with generic (parameterized type) POJO/DTO.
@sijie I am using 2.6.1 Client with 2.6.1 Server When I use the code as follows ``` private Producer<SignalEvent> getSignalProducer(String tenant) throws PulsarClientException { if (signalProducer.get(tenant) == null) { signalProducer.put(tenant, client.newProducer(Schema.JSON(SignalEvent.class)) .topic(createTopicUri(tenant, Topic.SIGNAL)) .create()); } return signalProducer.get(tenant); } ``` I get the error ``` Unknown type: T org.apache.avro.AvroTypeException: Unknown type: T at org.apache.avro.specific.SpecificData.createSchema(SpecificData.java:410) at org.apache.avro.reflect.ReflectData.createSchema(ReflectData.java:663) at org.apache.avro.reflect.ReflectData.createFieldSchema(ReflectData.java:759) at org.apache.avro.reflect.ReflectData$AllowNull.createFieldSchema(ReflectData.java:86) at org.apache.avro.reflect.ReflectData.createSchema(ReflectData.java:615) at org.apache.avro.specific.SpecificData$3.computeValue(SpecificData.java:335) at org.apache.avro.specific.SpecificData$3.computeValue(SpecificData.java:332) at java.base/java.lang.ClassValue.getFromHashMap(ClassValue.java:226) at java.base/java.lang.ClassValue.getFromBackup(ClassValue.java:208) at java.base/java.lang.ClassValue.get(ClassValue.java:114) at org.apache.avro.specific.SpecificData.getSchema(SpecificData.java:346) at org.apache.pulsar.client.impl.schema.StructSchema.extractAvroSchema(StructSchema.java:174) at org.apache.pulsar.client.impl.schema.StructSchema.createAvroSchema(StructSchema.java:161) at org.apache.pulsar.client.impl.schema.StructSchema.parseSchemaInfo(StructSchema.java:187) at org.apache.pulsar.client.impl.schema.JSONSchema.of(JSONSchema.java:96) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.apache.pulsar.client.internal.DefaultImplementation.lambda$newJSONSchema$26(DefaultImplementation.java:242) at org.apache.pulsar.client.internal.ReflectionUtils.catchExceptions(ReflectionUtils.java:35) at org.apache.pulsar.client.internal.DefaultImplementation.newJSONSchema(DefaultImplementation.java:239) at org.apache.pulsar.client.api.Schema.JSON(Schema.java:260) at com.cogito.library.eventmanager.PulsarEventBroker.getSignalProducer(PulsarEventBroker.java:106) at com.cogito.library.eventmanager.PulsarEventBroker.sendEvent(PulsarEventBroker.java:184) ``` but this code works fine ``` private Producer<String> getSignalProducer(String tenant) throws PulsarClientException { if (signalProducer.get(tenant) == null) { signalProducer.put(tenant, client.newProducer(Schema.STRING) .topic(createTopicUri(tenant, Topic.SIGNAL)) .create()); } return signalProducer.get(tenant); } ``` Thanks! GitHub link: https://github.com/apache/pulsar/discussions/18849#discussioncomment-4352457 ---- This is an automatically sent email for dev@pulsar.apache.org. To unsubscribe, please send an email to: dev-unsubscr...@pulsar.apache.org