Current section

Files

Jump to
elixir_structure_manager priv templates adapters async_event_bus async_messages.ex
Raw

priv/templates/adapters/async_event_bus/async_messages.ex

defmodule {app}.Adapters.AsyncMessages do
@moduledoc false
# @behaviour Your.Own.Behaviour
@target "external-service-name"
@query_name "GetPerson"
@command_name "RegisterPerson"
@event_name "PersonRegistered"
@notification_event_name "ConfigurationChanged"
@impl true
def emit(event_data) do
# it returns :ok when success
DomainEvent.new(@event_name, event_data)
|> DomainEventBus.emit()
end
@impl true
def run_remote_task(command_data) do
# it returns :ok when success
Command.new(@command_name, command_data)
|> DirectAsyncGateway.send_command(@target)
end
@impl true
def get_remote_information(query_data) do
# it returns {:ok, response} when success
AsyncQuery.new(@query_name, query_data)
|> DirectAsyncGateway.request_reply_wait(@target)
end
end