View Source Runbox.Runtime.Stage.UnitRegistry.RoutingKeyBuilder (runbox v21.2.0)

Builder of msg_parser and unit_register fns used in Runbox.Runtime.Stage.UnitRegistry

  • message_parser is lambda function used to parse Runbox.Message and creates key to find unit in unit registry
  • unit_register is lambda function used to parse Runbox.Runtime.Stage.Unit and creates key to store unit in unit registry

Summary

Functions

Gets routing key definition as argument and returns msg_parser lambda function

Gets routing key definition as argument and returns unit_register lambda function

Functions

Gets routing key definition as argument and returns msg_parser lambda function

Lambda takes Runbox.Message as argument and returns list of message body values based on provided routing key definition.

iex> msg_parser_fn = ...> RoutingKeyBuilder.build_msg_parser({:=, [[:foo]], [[:bar]]}) ...> msg_parser_fn.(%Message{body: %{foo: "message_body_key_value"}}) ["message_body_key_value"]

iex> msg_parser_fn = ...> RoutingKeyBuilder.build_msg_parser({:in, [[:foo]], [[:bar]]}) ...> msg_parser_fn.(%Message{body: %{foo: "message_body_key_value"}}) ["message_body_key_value"]

Link to this function

build_unit_register(arg)

View Source

Gets routing key definition as argument and returns unit_register lambda function

Lambda takes alternative registers (unit indexes), alternative register name, Runbox.Runtime.Stage.Unit as arguments and returns updated alternative registers based on provided routing key definition.

iex> unit_register_fn = ...> RoutingKeyBuilder.build_unit_register({:=, [[:foo]], [[:bar]]}) ...> unit = %Unit{id: "unit_id", attributes: %{bar: "attribute_key_value"}} ...> unit_register_fn.(%{"alt_reg" => AlternativeRegistry.new()}, "alt_reg", unit) %{"alt_reg" => %{["attribute_key_value"] => ["unit_id"]}}

iex> unit_register_fn = ...> RoutingKeyBuilder.build_unit_register({:in, [[:foo]], [[:bar]]}) ...> unit = %Unit{id: "unit_id", attributes: %{bar: ["value_1", "value_2"]}} ...> unit_register_fn.(%{"alt_reg" => AlternativeRegistry.new()}, "alt_reg", unit) %{"alt_reg" => %{["value_1"] => ["unit_id"], ["value_2"] => ["unit_id"]}}