Serialization Issues¶
Serialization issues occur when a formatter cannot convert a message to or from the broker payload.
Message Cannot Be Serialized¶
Typical symptoms:
JsonSerializationException
JsonException
NotSupportedException
Possible causes:
- unsupported types;
- circular references;
- missing converters;
- incompatible serializer configuration.
Verify Formatter Configuration¶
Ensure both publisher and subscriber use compatible formatters.
Example:
IDataFormatter formatter =
new MsJsonDataFormatter(...);
or:
IDataFormatter formatter =
new JsonDataFormatter(...);
Verify Message Contracts¶
Recommended:
public sealed class OrderCreated
{
public Guid OrderId { get; set; }
public DateTime CreatedAtUtc { get; set; }
}
Avoid:
- non-serializable types;
- open generic types;
- unsupported framework types.
Deserialization Failures¶
Typical causes:
- incompatible message schema;
- renamed properties;
- removed properties;
- incompatible formatter configuration.
Example:
Publisher:
{
"orderId": "..."
}
Subscriber:
public sealed class OrderCreated
{
public string Id { get; set; }
}
The payload structure no longer matches the consumer contract.
Encoding Issues¶
Newtonsoft formatters use an Encoding instance when converting JSON strings to broker payloads.
Verify that both sides use compatible encoding settings.
Conceptually:
JSON string
↓
Encoding
↓
byte[]
Diagnostic Checklist¶
Verify:
- formatter implementation;
- serializer settings;
- message contract compatibility;
- payload encoding;
- custom converters;
- JSON naming conventions.