37 lines
1.7 KiB
Erlang
37 lines
1.7 KiB
Erlang
%% good enough for most use cases
|
|
-define(IS_MC(Msg), element(1, Msg) == mc andalso tuple_size(Msg) == 5).
|
|
|
|
%% "Short strings can carry up to 255 octets of UTF-8 data, but
|
|
%% may not contain binary zero octets." [AMQP 0.9.1 $4.2.5.3]
|
|
-define(IS_SHORTSTR_LEN(B), byte_size(B) < 256).
|
|
|
|
%% We keep the following atom annotation keys short as they are stored per message on disk.
|
|
-define(ANN_EXCHANGE, x).
|
|
-define(ANN_ROUTING_KEYS, rk).
|
|
-define(ANN_TIMESTAMP, ts).
|
|
-define(ANN_RECEIVED_AT_TIMESTAMP, rts).
|
|
-define(ANN_DURABLE, d).
|
|
-define(ANN_PRIORITY, p).
|
|
|
|
-define(FF_MC_DEATHS_V2, message_containers_deaths_v2).
|
|
|
|
-type death_key() :: {SourceQueue :: rabbit_misc:resource_name(), rabbit_dead_letter:reason()}.
|
|
-type death_anns() :: #{%% timestamp of the first time this message
|
|
%% was dead lettered from this queue for this reason
|
|
first_time := pos_integer(),
|
|
%% timestamp of the last time this message
|
|
%% was dead lettered from this queue for this reason
|
|
last_time := pos_integer(),
|
|
ttl => OriginalTtlHeader :: non_neg_integer()}.
|
|
|
|
-record(death, {exchange :: OriginalExchange :: rabbit_misc:resource_name(),
|
|
routing_keys :: OriginalRoutingKeys :: [rabbit_types:routing_key(),...],
|
|
%% how many times this message was dead lettered from this queue for this reason
|
|
count :: pos_integer(),
|
|
anns :: death_anns()}).
|
|
|
|
-record(deaths, {first :: death_key(), % redundant to mc annotations x-first-death-*
|
|
last :: death_key(), % redundant to mc annotations x-last-death-*
|
|
records :: #{death_key() := #death{}}
|
|
}).
|