Skip to content

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.