MasterHex.pm Version

YEET

Generates standard messages for Dead Letter Queue

Installation

If available in Hex, the package can be installed by adding yeet to your list of dependencies in mix.exs:

def deps do
  [
    {:yeet, "~> 1.0.5"}
  ]
end

Usage

Yeet.format_message(app_name, original_message, options \\ [])

Options:

Example Output Message Shape

%{
  app: "forklift",
  original_message: "{\"topic\": "\streaming-raw\", ...}",
  stacktrace: "    :erlang./(1, 0)",
  exit_code: "%RuntimeError{message: \"Error\"}",
  error: "FORKLIFT-PARSE"
  reason: "Failed to parse message",
  timestamp: #DateTime<2018-09-11 11:11:00Z>
}

Example generation snippets

Stacktrace

iex(1)> System.stacktrace
[
  {:erl_anno, :anno_info, [{1, 18, 1}], [file: 'erl_anno.erl', line: 375]},
  {IEx.Evaluator, :loop, 1, [file: 'lib/iex/evaluator.ex', line: 103]}
  ...
  ...
]
iex(2)> Process.info(self(), :current_stacktrace)
{:current_stacktrace,
 [
   {Process, :info, 2, [file: 'lib/process.ex', line: 767]},
   {:erl_eval, :do_apply, 6, [file: 'erl_eval.erl', line: 680]},
   {:elixir, :eval_forms, 4, [file: 'src/elixir.erl', line: 258]},
   {IEx.Evaluator, :handle_eval, 5, [file: 'lib/iex/evaluator.ex', line: 257]},
   {IEx.Evaluator, :do_eval, 3, [file: 'lib/iex/evaluator.ex', line: 237]},
   {IEx.Evaluator, :eval, 3, [file: 'lib/iex/evaluator.ex', line: 215]},
   {IEx.Evaluator, :loop, 1, [file: 'lib/iex/evaluator.ex', line: 103]}
 ]}

Exit Codes

exit_code =
  try do
    raise "Error"
  rescue
    e -> e
  end

Timestamp

iex(3)> DateTime.from_iso8601("2018-09-11 11:11:00Z")
{:ok, #DateTime<2018-09-11 11:11:00Z>, 0}