我正在尝试使用一个名为乌龟的灵丹妙药库。每当我使用iex -S mix
时,我都可以让消息的发送工作起来。但是,当我使用mix start
开始我的开始任务时,程序将无法工作。我得到了一个unknown registry: Tortoise.Registry
错误。
我可以在没有错误的情况下启动乌龟的监控程序,当我尝试用Tortoise.Supervisor.start_child
启动该进程的子进程时,我就得到了错误。
defmodule Mqtt.Begin do
require Tortoise
def start do
opts = [strategy: :one_for_one, name: Mqtt.Begin]
{:ok, pid} = Tortoise.Supervisor.start_link(opts)
{:ok, _} =
Tortoise.Supervisor.start_child(Mqtt.Begin, [
client_id: :a,
handler: {Mqtt.Handler, [name: :a]},
server: {Tortoise.Transport.Tcp, host: 'localhost', port: 1883},
subscriptions: [{"share/share-group/bar", 0}] ])
在灵丹妙药中使用extern库时,整个库是用deps.compile创建的吗?还是我还需要做点什么?
发布于 2018-10-21 00:56:26
这似乎是因为当您使用iex -S mix
启动应用程序时,erlang代码加载主体,erlang将其启动到interactive mode
中,并自动加载所有模块。
mix start
(您应该调用mix run
)似乎以嵌入式模式启动您的应用程序,根据启动脚本在启动时加载代码。
要使其工作,必须将:tortoise
添加到mix.exs
中的application
列表中:
def application do
[
extra_applications: [:logger, :ssl, :tortoise],
mod: {Your.App, []}
]
end
https://stackoverflow.com/questions/52909767
复制