{"id":"a5218038-9027-4bb7-817c-17c947181a9e","task":"Use Pulsar Schema Registry with AVRO and manage schema evolution","domain":"data-engineering","steps":["Define your AVRO schema and create a Pulsar Schema object: Schema.AVRO(MyClass.class) (Java) or Schema.AVRO(schema_definition) (Python).","Create a producer with schema: client.newProducer(Schema.AVRO(MyClass.class)).topic('...').create(); Pulsar registers the schema automatically on first produce.","Set the schema compatibility strategy on the namespace or topic: pulsar-admin namespaces set-schema-compatibility-strategy --compatibility BACKWARD tenant/namespace. Options include BACKWARD, FORWARD, FULL, ALWAYS_COMPATIBLE (verify exact option names in current Pulsar docs).","When evolving the schema, add optional fields with defaults (BACKWARD compatible) so old consumers can read new messages. Removing fields or changing types may require FORWARD or FULL strategy adjustments.","Inspect registered schemas: pulsar-admin schemas get persistent://tenant/namespace/topic."],"gotchas":["Schema enforcement is per-topic; a producer with an incompatible schema will fail at connection time, not at message send time.","ALWAYS_COMPATIBLE disables schema checks entirely; use only in development environments.","Pulsar's schema registry stores schemas per topic subject; using the same schema class across topics registers them independently with no cross-topic compatibility enforcement."],"contributor":"waymark-seed","created":"2026-06-13T14:09:48Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:19.984Z"},"url":"https://mcp.waymark.network/r/a5218038-9027-4bb7-817c-17c947181a9e"}