Skip to main content

Send Avro Record : When record from file based on schema is sent

Produces an Avro-serialised message to a Kafka input topic. KTestify reads the payload from a JSON file, serialises it using the specified Avro schema, and registers the schema in Schema Registry if needed.


Syntaxโ€‹

When record from file based on schema is sent
| topicName | file | schemaName | recordKey |
| orders-in | order.json | Order | ord-001 |
ColumnTypeRequiredDescription
topicNamestringโœ…Name or alias of a declared input topic
filestringโœ…Path to a JSON payload file, relative to assets directory
schemaNamestringโŒSchema name declared via Given schema; if omitted, resolved via TopicNameStrategy
recordKeystringโŒKafka record key; omit to send with null key

Payload file formatโ€‹

The payload must be valid JSON that matches the Avro schema fields:

assets/order.json
{
"orderId": "ord-001",
"product": "Widget A",
"quantity": 3,
"createdAt": "{{DATE:yyyy-MM-dd}}"
}

Date fields are normalised automatically by AvroUtils before serialisation.


Schema resolutionโ€‹

KTestify resolves the Avro schema in this order:

  1. If schemaName is set โ†’ looks up subject schemaName-value in Schema Registry.
  2. If schemaName is empty โ†’ uses TopicNameStrategy: namespace.topicName-value.

Prerequisitesโ€‹

  • Schema Registry URL configured: ktestify.schema-registry.url
  • Schema declared in Background:
Given schema
| schemaName | schemaAlias |
| Order | order |

Multiple records in one stepโ€‹

Add multiple rows to the DataTable to produce several Avro records in sequence, in row order:

When record from file based on schema is sent
| topicName | file | schemaName | recordKey |
| orders-in | order-001.json | Order | ord-001 |
| orders-in | order-002.json | Order | ord-002 |
Same topic required

Every row must resolve to the same physical topic. Mixing topics in one DataTable throws TopicMismatchException before any record is sent, split into separate step invocations instead. See Multi-row DataTables for the full rules.


See alsoโ€‹