EasyRpc.RpcWrapper (EasyRpc v0.9.1)

Copy Markdown View Source

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