Our Projects
A showcase of our work.
EasyRpc - A easy way to use RPC in Elixir
Started: 2025-03-02
Intro
This library help developer easy to wrap a remote procedure call (rpc, library uses Erlang :erpc
module).
EasyRpc help dev reduce time to work with Elixir distributed system.
Features
EasyRpc has some nice features to work with dynamic/static cluster in Elixir like:
- Support easy to wrap a remote api to call like local.
- Support error handling, timeout.
- Add a remote api by config or using macro in module.
- Support node selection algorithms & sticky node.
Installation
Adding easy_rpc
library to your list of dependencies in mix.exs
:
def deps do
[
{:easy_rpc, "~> 0.1.3"}
]
end
Usage
Follow steps
Add config to config.exs
Put config to config.exs file, and use it in your module by using RpcWrapper. User need separate config for each wrapper, and put it in config.exs
config :app_name, :wrapper_name,
nodes: [:"test1@test.local"],
error_handling: true,
select_node_mode: :random,
module: TargetApp.Interface.Api,
functions: [
# {function_name, arity, options}
{:get_data, 1},
{:put_data, 1, error_handling: false},
{:clear, 2, new_name: :clear_data, retry: 3},
]
Add to local module
by using use EasyRpc.RpcWrapper
in your module, you can call remote functions as local functions.
defmodule DataHelper do
use EasyRpc.RpcWrapper,
otp_app: :app_name,
config_name: :account_wrapper
def process_remote() do
# call rpc like a local function.
case get_data("key") do
{:ok, data} ->
# do something with data
{:error, reason} ->
# handle error
end
end
end
# Or call from other module
{:ok, result} = DataHelper.get_data("my_key")
For details please go to module's docs.