Packages
x3m_system
0.5.0
0.9.1
0.9.0
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
retired
0.7.20
0.7.19
0.7.18
0.7.17
0.7.16
0.7.15
0.7.14
0.7.13
0.7.12
0.7.11
0.7.10
0.7.9
0.7.8
retired
0.7.7
0.7.6
retired
0.7.5
0.7.4
retired
0.7.3
retired
0.7.2
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
retired
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.1.1
0.1.0
Building blocks for distributed and/or CQRS/ES systems
Current section
Files
Jump to
Current section
Files
lib/service_telemetry_handler.ex
defmodule X3m.System.ServiceTelemetryHandler do
require Logger
def setup do
events = [
[:x3m, :system, :node_joined],
[:x3m, :system, :node_left]
]
config = %{service_registry: X3m.System.ServiceRegistry}
:telemetry.attach_many("x3m-system-node_handler", events, &handle_event/4, config)
end
@doc false
def handle_event(
[:x3m, :system, :node_joined],
_measurements,
%{node: node},
%{service_registry: service_registry}
) do
Logger.debug(fn -> "[Discovery] Asking node #{inspect(node)} for local services" end)
request = {:introduce_local_services, Node.self()}
send({service_registry, node}, request)
end
@doc false
def handle_event(
[:x3m, :system, :node_left],
_measurements,
%{node: node},
%{service_registry: service_registry}
) do
request = {:unregister_node_services, node}
send(service_registry, request)
end
end