Configuration-driven RPC wrapper.
Generates local functions from a function list defined in application config. All RPC definitions live in one place (config.exs / runtime.exs), keeping the host module clean.
Config example
config :app_name, :wrapper_name,
nodes: [:"node1@host", :"node2@host"],
select_mode: :random,
sticky_node: false,
error_handling: true,
timeout: 3_000,
module: TargetApp.RemoteModule,
functions: [
{:get_data, 1},
{:put_data, 1, [error_handling: false]},
{:clear, 2, [new_name: :clear_data, private: true]},
{:put_data, 1, [new_name: :put_with_retry, retry: 3, timeout: 1_000]}
]Usage
defmodule DataHelper do
use EasyRpc.RpcWrapper,
otp_app: :app_name,
config_name: :wrapper_name
def process_remote() do
case get_data("key") do
{:ok, data} -> data
{:error, error} -> raise EasyRpc.Error.format(error)
end
end
end