# `FireMQ.Message`
[🔗](https://github.com/FireMQ/firemq-elixir/blob/v0.1.0/lib/firemq/message.ex#L1)

A message received with `FireMQ.subscribe/3` or `FireMQ.get/3`.

  * `body` - the raw body, a binary.
  * `exchange` and `routing_key` - where the message was published.
  * `properties` - a map with atom keys, holding only the properties that are set:
    `:content_type`, `:content_encoding`, `:correlation_id`, `:reply_to`, `:expiration`
    (milliseconds), `:message_id`, `:timestamp` (seconds since the Unix epoch), `:type`,
    `:user_id`, `:app_id` and `:priority`.
  * `headers` - application headers, a map with string keys.
  * `redelivered` - `true` when the message was delivered before and not acknowledged.
  * `delivery_tag` - the broker's tag for this delivery.

Settle a message with `FireMQ.ack/1` or `FireMQ.nack/2`, unless it was received with
`no_ack: true`.

# `t`

```elixir
@type t() :: %FireMQ.Message{
  body: binary(),
  conn: pid() | nil,
  delivery_tag: non_neg_integer(),
  exchange: String.t(),
  headers: map(),
  no_ack: boolean(),
  properties: map(),
  redelivered: boolean(),
  routing_key: String.t()
}
```

---

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