Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

org.springframework.messaging.converter.MessageConversionException

Using Avro message format.

Getting Below Exception. It is not able to map to AvroPlanCompleteTrigger java object after de-serilization. Can someone please help?

Bean [com.wom.repl.odr.receiver.Receiver@606b1c65]; nested exception is org.springframework.messaging.converter.MessageConversionException: Cannot handle message; nested exception is org.springframework.messaging.converter.MessageConversionException: Cannot convert from [com.wom.repl.odr.dto.AvroPlanCompleteTrigger] to [com.wom.repl.odr.dto.AvroPlanCompleteTrigger] for GenericMessage [payload={"groupId": 609001, "runUUID": "runuuid", "wmtItemNumber": "123456", "sourceLocation": 987, "retryCount": 3, "applicationName": "Jenkins"}, headers={kafka_offset=0, kafka_receivedMessageKey=null, kafka_receivedPartitionId=0, kafka_receivedTopic=test3, kafka_acknowledgment=Acknowledgment for ConsumerRecord(topic = test3, partition = 0, offset = 0, CreateTime = 1574768943315, checksum = 2886880703, serialized key size = -1, serialized value size = 29, key = null, value = {"groupId": 1234, "runUUID": "runuuid", "wmtItemNumber": "123456", "sourceLocation": 987, "retryCount": 3, "applicationName": "Jenkins"})}], failedMessage=GenericMessage [payload={"groupId": 1234, "runUUID": "runuuid", "wmtItemNumber": "123456", "sourceLocation": 987, "retryCount": 3, "applicationName": "Jenkins"}, headers={kafka_offset=0, kafka_receivedMessageKey=null, kafka_receivedPartitionId=0, kafka_receivedTopic=test3, kafka_acknowledgment=Acknowledgment for ConsumerRecord(topic = test3, partition = 0, offset = 0, CreateTime = 1574768943315, checksum = 2886880703, serialized key size = -1, serialized value size = 29, key = null, value = {"groupId": 609001, "runUUID": "runuuid", "wmtItemNumber": "123456", "sourceLocation": 987, "retryCount": 3, "applicationName": "Jenkins"})}], at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:178), at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:72), at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:47), at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeRecordListener(KafkaMessageListenerContainer.java:794), at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeListener(KafkaMessageListenerContainer.java:738), at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.access$2200(KafkaMessageListenerContainer.java:245), at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer$ListenerInvoker.run(KafkaMessageListenerContainer.java:1031), at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511), at java.util.concurrent.FutureTask.run(FutureTask.java:266), at java.lang.Thread.run(Thread.java:748)] :END

Pom dependencies version:

<dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <version>1.2.2.RELEASE</version>
        </dependency>

<dependency>
            <groupId>org.apache.avro</groupId>
            <artifactId>avro</artifactId>
            <version>1.9.1</version>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>

AvroDeserializer method below which I am using to get AvroPlanCompleteTrigger this java object.


    public T deserialize(String topic, byte[] data) {
        try {
            T result = null;

            if (data != null) {
                LOGGER.debug("data='{}'", DatatypeConverter.printHexBinary(data));

                DatumReader<GenericRecord> datumReader = new SpecificDatumReader<>(
                        targetType.newInstance().getSchema());
                Decoder decoder = DecoderFactory.get().binaryDecoder(data, null);

                result = (T) datumReader.read(null, decoder);
                LOGGER.debug("deserialized data='{}'", result);
            }
            return result;
        } catch (Exception ex) {
            throw new SerializationException(
                    "Can't deserialize data '" + Arrays.toString(data) + "' from topic '" + topic + "'", ex);
        }
    }

like image 814
amitwdh Avatar asked Sep 10 '26 09:09

amitwdh


1 Answers

It looks like you have deserialized a com.wom.replenishment.odr.dto.AvroPlanCompleteTrigger but the method parameter is a com.wom.repl.odr.dto.AvroPlanCompleteTrigger.

Spring doesn't know how to convert from one to the other.

like image 62
Gary Russell Avatar answered Sep 13 '26 06:09

Gary Russell



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!