Nicht im Gewerkschaftsfehler bei Verwendung von Null- und Enum -Typen im AVRO -SchemaApache

Apache verstehen
Anonymous
 Nicht im Gewerkschaftsfehler bei Verwendung von Null- und Enum -Typen im AVRO -Schema

Post by Anonymous »

Folgendes ist das Ausschnitt des AVRO -Schemas: < /p>

Code: Select all

    {
"name": "fxBoughtCurrencySettlementStatus",
"type": [
"null",
{
"type": "enum",
"name": "CurrencySettlementStatus",
"doc": "FXSettCurrencySettlementStatus Enum",
"symbols": [
"PAID",
"UNPAID",
"NOT_ACTIONED"
]
}
],
"doc": "FX Bought Currency Settlement Status",
"default": null
},
< /code>
dto: < /p>
@JsonProperty(required = false)
private String fxBoughtCurrencySettlementStatus;
< /code>
Code -Snippet des Java -Moduls, das die Nachricht an das Thema sendet < /p>
Schema currencySettlementStatusSchema =
SchemaBuilder.enumeration("CurrencySettlementStatus")
.symbols("PAID", "UNPAID", "NOT_ACTIONED");

GenericData.EnumSymbol fxBoughtCurrencySettlementStatusEnum =
new GenericData.EnumSymbol(
currencySettlementStatusSchema, dto.getFxBoughtCurrencySettlementStatus());

fxTradeStatusChange.put("fxBoughtCurrencySettlementStatus", fxBoughtCurrencySettlementStatusEnum);
< /code>
Nachrichtennutzlast -Snippet (über Postman) < /p>
 "fxBoughtCurrencySettlementStatus": "PAID",
< /code>
Ich erhalte die folgende Ausnahme, wenn ich versuche, Nachricht mit Postman zu senden. < /p>
Caused by: org.apache.avro.UnresolvedUnionException: Not in union ["null",{"type":"enum","name":"CurrencySettlementStatus","namespace":"com.x.avro","doc":"FXSettCurrencySettlementStatus Enum","symbols":["PAID","UNPAID","NOT_ACTIONED"]}]: PAID (field=fxBoughtCurrencySettlementStatus)
< /code>
Wenn ich explizit Nullwert anbietet, funktioniert er gut, z. B. < /p>
fxTradeStatusChange.put("fxBoughtCurrencySettlementStatus", null);
< /code>
Wenn ich das gleiche in der Nachrichtennutzlast über Postman tue, gibt es eine ähnliche Ausnahme an. < /p>
"fxBoughtCurrencySettlementStatus": null,
< /code>
Not in union ["null",{"type":"enum","name":"CurrencySettlementStatus","namespace":"com.x.avro","doc":"FXSettCurrencySettlementStatus Enum","symbols":["PAID","UNPAID","NOT_ACTIONED"]}]: null (field=fxBoughtCurrencySettlementStatus)
< /code>
Based on the avro schema, I believe the following should work i.e. "PAID" is an acceptable value based on the avro schema.
"fxBoughtCurrencySettlementStatus": "PAID"
< /code>
Current outcome:
Caused by: org.apache.avro.UnresolvedUnionException: Not in union ["null",{"type":"enum","name":"CurrencySettlementStatus","namespace":"com.x.avro","doc":"FXSettCurrencySettlementStatus Enum","symbols":["PAID","UNPAID","NOT_ACTIONED"]}]: PAID (field=fxBoughtCurrencySettlementStatus)
< /code>
Expected outcome:
Message should be sent by the producer without any issues.
[kafka-producer-network-thread | producer-1] INFO  org.apache.kafka.clients.Metadata - [Producer clientId=producer-1] Cluster ID: JXBmtyH0RiulC1Pmq8mJtw
[kafka-producer-network-thread | producer-1] INFO  org.apache.kafka.clients.producer.internals.TransactionManager - [Producer clientId=producer-1] ProducerId set to 0 with epoch 0

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post