、のは、それがこのキューについては、このElixir GenServerの依存性注入はどのようにして行いますか?
defmodule Queue do
use GenServer
def start_link(name) do
GenServer.start_link(__MODULE__, :ok, name: name)
end
def push(server, msg) do
GenServer.call(server, {:subscribe, channel, last_id})
end
def pop(server) do
GenServer.call(server, {:pop, channel, last_id})
end
# handlers here ...
end
のような単純なキューの言わせて、私は
- PostgreSQLのように、異なるストレージバックエンドを提供するワン
- インメモリ
- ファイル
など。ここに質問があります。このGenServerに依存性注入を行うにはどうしたらいいですか?理想的には私は、データベースバックエンド
{:ok, db_queue} = Queue.start_link(:DBQueue, db_process_pid)
のために、このような異なるバックエンドとのキューを作成したいとRedisのために、私は別のバックエンドと同じキューサーバーを作成することができ、このように、この
{:ok, redis_queue} = Queue.start_link(:RedisQueue, redis_process_pid)
を好むかもしれません。 ElixirがGenServerの依存性注入を行うベストプラクティスは何ですか?