X3m System v0.5.1 X3m.System.Message View Source
System Message.
This module defines a X3m.System.Message
struct and the main functions
for working with it.
Fields:
service_name
- the name of the service that should handle this message. Example::create_job
.id
- unique id of the message.correlation_id
- id of the message that "started" conversation.causation_id
- id of the message that "caused" this message.logger_metadata
- In each new processLogger.metadata
should be set to this value.invoked_at
- utc time when message was generated.dry_run
- specifies dry run option. It can be eitherfalse
,true
or:verbose
.request
- request structure converted to Ecto.Changeset (or anything else useful).raw_request
- request as it is received before converting to Message (i.e.params
from controller action).assigns
- shared Data as a map.response
- the response for invoker.events
- list of generated events.aggregate_meta
- metadata for aggregate.valid?
- when set totrue
it means that raw_request was successfully validated and structered request is set torequest
fieldreply_to
- Pid of process that is waiting for response.halted?
- when set totrue
it means that response should be returned to the invoker without further processing of Message.
Link to this section Summary
Functions
Adds event
in message.events
list. If event
is nil
it behaves as noop.
Assigns a value to a key in the message. The "assigns" storage is meant to be used to store values in the message so that others in pipeline can use them when needed. The assigns storage is a map.
Returns message
it received with Response.created(id)
result set.
Creates new message with given service_name
and provided opts
Puts value
under key
in message.raw_request
map.
Returns sys_msg
with provided response
and as halted? = true
.
Link to this section Types
t()
View Sourcet() :: %X3m.System.Message{ aggregate_meta: map(), assigns: assigns(), causation_id: String.t(), correlation_id: String.t(), dry_run: dry_run(), events: [map()], halted?: boolean(), id: String.t(), invoked_at: DateTime.t(), logger_metadata: Keyword.t(), raw_request: map(), reply_to: pid(), request: nil | request(), response: nil | X3m.System.Response.t(), service_name: atom(), valid?: boolean() }
Link to this section Functions
Adds event
in message.events
list. If event
is nil
it behaves as noop.
After return/2
(and friends) order of msg.events
will be the same as
they've been added.
Assigns a value to a key in the message. The "assigns" storage is meant to be used to store values in the message so that others in pipeline can use them when needed. The assigns storage is a map.
Examples
iex> sys_msg.assigns[:user_id]
nil
iex> sys_msg = assign(sys_msg, :user_id, 123)
iex> sys_msg.assigns[:user_id]
123
Returns message
it received with Response.created(id)
result set.
Creates new message with given service_name
and provided opts
:
id
- id of the message. If not provided it tries to findrequest_id
inLogger.metadata
. If that one is also missing it generates random one.correlation_id
- id of "conversation". If not provided it is set toid
.causation_id
- id of message that "caused" this message. If not provided it is set toid
.reply_to
- sets pid of process that expects response. If not provided it is set toself()
.raw_request
- sets raw request as it is received (i.e.params
from controller action).logger_metadata
- if not providedLogger.metadata
is used by default.
Puts value
under key
in message.raw_request
map.
return(sys_msg, response)
View Sourcereturn(t(), X3m.System.Response.t()) :: t()
Returns sys_msg
with provided response
and as halted? = true
.