在Elixir应用程序中配置多个回购

在Elixir应用程序中配置多个回购,elixir,erlang-supervisor,ecto,Elixir,Erlang Supervisor,Ecto,我正在尝试使用在Elixir应用程序中配置两个回购。 我需要帮助来配置它们,这样它们都可以通过一对一策略独立地进行监督;我认为这是正确的,这意味着使用它们的进程将重新启动 回购A和回购B mix.exs设置: def application do [applications: [:logger, :tds, :tds_ecto, :ecto, :httpoison, :csvlixir], mod: {MyApp, []}] end MyApp\u app.ex 下面的片段: def

我正在尝试使用在Elixir应用程序中配置两个回购。
我需要帮助来配置它们,这样它们都可以通过一对一策略独立地进行监督;我认为这是正确的,这意味着使用它们的进程将重新启动

回购A和回购B

mix.exs设置

def application do
  [applications: [:logger, :tds, :tds_ecto, :ecto, :httpoison, :csvlixir],
   mod: {MyApp, []}]
end
MyApp\u app.ex

下面的片段:

def start(_type, _args) do
    import Supervisor.Spec, warn: false

   children = [
   supervisor(MyApp.Repo-A, []), 
   worker(Task, [MyAppModule, :work, []], restart: :temporary),
   supervisor(MyApp.Repo-B, []), 
   worker(Task, [MyAppModule, :work, []], restart: :temporary)
 ]

 # See http://elixir-lang.org/docs/stable/elixir/Supervisor.html
 # for other strategies and supported options
 opts = [strategy: :one_for_one, name: MyApp.Supervisor]
 Supervisor.start_link(children, opts)
end

defmodule Repo-A do
  use Ecto.Repo, otp_app: :myapp
end

defmodule Repo-B do
  use Ecto.Repo, otp_app: :myapp
end
当我
mix run
时,我得到以下信息-我不确定如何正确定义id

** (Mix) Could not start application myapp: exited in: MyApp.start(:normal, [])
 ** (EXIT) an exception was raised:
     ** (ArgumentError) duplicated id Task found in the supervisor  specification, please explicitly pass the :id option when defining this worker/supervisor

id
arg添加到
opts
关键字列表中,例如:

worker(Task, [MyAppModule, :work, []], restart: :temporary, id: :my_app_module_1)

id
arg添加到
opts
关键字列表中,例如:

worker(Task, [MyAppModule, :work, []], restart: :temporary, id: :my_app_module_1)

我不认为这个问题与Ecto有关,是不是因为调用了
worker(Task,[MyAppModule,:work,[]],restart::temporary),
两次?@Gazler-是的,同意与Ecto无关-只是我的noob对它的使用:)我不确定如何为两次回购配置主管和工作人员-我确定我发布的代码是错误的…我不认为该问题与Ecto有关,不是调用
工作人员(任务,[MyAppModule,:work,[],restart::temporary],
两次的结果吗?@Gazler-是的,同意与Ecto没有问题-只是我的noob使用:)我不确定如何为两个回购配置主管和工作人员-我确定我发布的代码是错误的…Jason-感谢您的输入,虽然我没有把这个标记为正确答案,因为尽管它允许我们定义Id,但它不允许两个Recto模块独立注册;第二份回购协议无法使用。如果问题不清楚,我表示歉意,但问题确实是从配置两次回购的问题开始的。显然,我没有完全理解你的全部问题。很抱歉您提供的错误输出似乎表明
id
是问题所在。Jason-感谢您的输入,尽管我没有将此标记为正确答案,因为尽管它允许我们定义id,但它不允许两个Recto模块独立注册;第二份回购协议无法使用。如果问题不清楚,我表示歉意,但问题确实是从配置两次回购的问题开始的。显然,我没有完全理解你的全部问题。很抱歉您提供的错误输出似乎指出
id
是问题所在。