# Only Struct objects supported for \[copying fields from value to key\]

**URL:** <https://forum.confluent.io/t/only-struct-objects-supported-for-copying-fields-from-value-to-key/6773>\
**Category:** Kafka Connect\
**Created:** [5 December 2022 21:32 UTC](https://forum.confluent.io/t/only-struct-objects-supported-for-copying-fields-from-value-to-key/6773 "2022-12-05T21:32:02Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![chanduy9](https://avatars.discourse-cdn.com/v4/letter/c/65b543/32.png) [@chanduy9](https://forum.confluent.io/u/chanduy9)\
**Post date:** [5 December 2022 21:32 UTC](https://forum.confluent.io/t/only-struct-objects-supported-for-copying-fields-from-value-to-key/6773/1 "2022-12-05T21:32:02Z")

</div>

RabbitMQSoruce connector throwing below error while setting the key from incoming nested json.

[2022-12-05 16:25:50,624] ERROR Error encountered in task RabbitMQSourceConnectorConnector\_aerospike-0. Executing stage ‘TRANSFORMATION’ with class ‘org.apache.kafka.connect.transforms.ValueToKey’, where source record is = SourceRecord{sourcePartition={queues=padl.aerospikedatasyncDestPOC}, sourceOffset={deliveryTag=1}} ConnectRecord{topic=‘sandbox.com.schwab.preferences.padl.dev’, kafkaPartition=null, key=null, keySchema=Schema{STRING}, value=[B@245262b, valueSchema=Schema{BYTES}, timestamp=1670275550623, headers=ConnectHeaders(headers=[ConnectHeader(key=rabbitmq.consumer.tag, value=amq.ctag-2Z6cagGwDWpY6-y821\_LbQ, schema=Schema{STRING}), ConnectHeader(key=rabbitmq.content.type, value=null, schema=Schema{STRING}), ConnectHeader(key=rabbitmq.content.encoding, value=null, schema=Schema{STRING}), ConnectHeader(key=rabbitmq.delivery.mode, value=1, schema=Schema{INT32}), ConnectHeader(key=rabbitmq.priority, value=0, schema=Schema{INT32}), ConnectHeader(key=rabbitmq.correlation.id, value=null, schema=Schema{STRING}), ConnectHeader(key=rabbitmq.reply.to, value=null, schema=Schema{STRING}), ConnectHeader(key=rabbitmq.expiration, value=null, schema=Schema{STRING}), ConnectHeader(key=rabbitmq.message.id, value=null, schema=Schema{STRING}), ConnectHeader(key=rabbitmq.timestamp, value=null, schema=Schema{org.apache.kafka.connect.data.Timestamp:INT64}), ConnectHeader(key=rabbitmq.type, value=null, schema=Schema{STRING}), ConnectHeader(key=rabbitmq.user.id, value=null, schema=Schema{STRING}), ConnectHeader(key=rabbitmq.app.id, value=null, schema=Schema{STRING}), ConnectHeader(key=rabbitmq.delivery.tag, value=1, schema=Schema{INT64}), ConnectHeader(key=rabbitmq.redeliver, value=true, schema=Schema{BOOLEAN}), ConnectHeader(key=rabbitmq.exchange, value=, schema=Schema{STRING}), ConnectHeader(key=rabbitmq.routing.key, value=padl.aerospikedatasyncDestPOC, schema=Schema{STRING})])}. (org.apache.kafka.connect.runtime.errors.LogReporter:66)  
org.apache.kafka.connect.errors.DataException: Only Struct objects supported for [copying fields from value to key], found: [B  
at org.apache.kafka.connect.transforms.util.Requirements.requireStruct(Requirements.java:52)  
at org.apache.kafka.connect.transforms.ValueToKey.applyWithSchema(ValueToKey.java:81)  
at org.apache.kafka.connect.transforms.ValueToKey.apply(ValueToKey.java:67)  
at org.apache.kafka.connect.runtime.TransformationChain.lambda$apply$0(TransformationChain.java:50)  
at org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndRetry(RetryWithToleranceOperator.java:156)  
at org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execAndHandleError(RetryWithToleranceOperator.java:190)  
at org.apache.kafka.connect.runtime.errors.RetryWithToleranceOperator.execute(RetryWithToleranceOperator.java:132)  
at org.apache.kafka.connect.runtime.TransformationChain.apply(TransformationChain.java:50)  
at org.apache.kafka.connect.runtime.WorkerSourceTask.sendRecords(WorkerSourceTask.java:346)  
at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:261)  
at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:191)  
at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:240)  
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)  
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)  
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)  
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)  
at java.base/java.lang.Thread.run(Thread.java:829)

---

<div class="post-metadata">

**Author:** ![OneCricketeer](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.confluent.io/onecricketeer/32/1551_2.png) [@OneCricketeer](https://forum.confluent.io/u/OneCricketeer)\
**Post date:** [21 December 2022 14:07 UTC](https://forum.confluent.io/t/only-struct-objects-supported-for-copying-fields-from-value-to-key/6773/2 "2022-12-21T14:07:04Z")

</div>

The RabbitMQ source only supports strings or bytes values, and does not care you have JSON. It doesn’t parse the data, therefore doesn’t offer fields to copy into the key.

You’ll need to use Kafka Streams or ksqlDB to parse the value, then appropriately relocate fields from the value into a key

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex019/uploads/confluentcommunity/original/1X/c49438c90c9df282e9996fdf6971be890c71b65a.svg) [@system](https://forum.confluent.io/u/system)\
**Post date:** [20 January 2023 14:07 UTC](https://forum.confluent.io/t/only-struct-objects-supported-for-copying-fields-from-value-to-key/6773/3 "2023-01-20T14:07:33Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
