EasyRpc.DefRpc (EasyRpc v0.9.0)

Copy Markdown View Source

Declarative per-function RPC wrapper via the defrpc macro.

Node config is loaded at call time (via execute_dynamic/4), so topology changes in runtime.exs take effect without recompiling.

Config example

config :my_app, :remote_defrpc,
  nodes: [:"remote@127.0.0.1"],
  select_mode: :round_robin,
  sticky_node: true

Module setup

defmodule MyApi do
  use EasyRpc.DefRpc,
    otp_app: :my_app,
    config_name: :remote_defrpc,
    module: RemoteNode.Interface,
    timeout: 1_000,
    retry: 0

  defrpc :get_data
  defrpc :put_data, args: 1
  defrpc :clear, args: 2, as: :clear_data, private: true
  defrpc :put_data, args: [:name], new_name: :put_with_retry, retry: 3, timeout: 1_000
end

Options for defrpc

  • :args - Arity as integer, [], or list of arg-name atoms (default: 0)
  • :as / :new_name - Override the generated function name
  • :private - Generate as defp (default: false)
  • :retry - Override global retry count
  • :timeout - Override global timeout
  • :error_handling - Override global error-handling flag

Summary

Functions

defrpc(fun, fun_opts \\ [])

(macro)