# `PhoenixMicro.Serializer`
[🔗](https://github.com/iamkanishka/phoenix_micro/blob/v1.0.0/lib/phoenix_micro/serializer.ex#L1)

Behaviour for pluggable message serialization.

The serializer is responsible for encoding `PhoenixMicro.Message` payloads
to binary when publishing, and decoding binary back to terms when consuming.

# `decoded`

```elixir
@type decoded() :: term()
```

# `encoded`

```elixir
@type encoded() :: binary()
```

# `content_type`

```elixir
@callback content_type() :: String.t()
```

# `decode!`

```elixir
@callback decode!(encoded()) :: decoded()
```

# `encode!`

```elixir
@callback encode!(term()) :: encoded()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
