Как настроить проект Elixir для использования RabbitMQ через amqp?
Я хочу использовать rabbitMQ из моего приложения elixir phoenix через amqp. Я следовал за учебником на официальном сайте, но все еще во время mix.deps compile
Я получаю ошибку:
include/amqp_gen_consumer_spec.hrl:30: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:31: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:32: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:34: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:35: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:36: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:37: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:38: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:39: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:42: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:30: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:31: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:32: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:34: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:35: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:36: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:37: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:38: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:39: syntax error before: '/'
include/amqp_gen_consumer_spec.hrl:42: syntax error before: '/'
Compiling src/amqp_selective_consumer.erl failed:
ERROR: compile failed while processing /home/bmarkons/soc2016-marko/telegram/deps/amqp_client: rebar_abort
** (Mix) Could not compile dependency :amqp_client, "/usr/bin/rebar compile skip_deps=true deps_dir="/home/bmarkons/soc2016-marko/telegram/_build/dev/lib"" command failed. You can recompile this dependency with "mix deps.compile amqp_client", update it with "mix deps.update amqp_client" or clean it with "mix deps.clean amqp_client"
Я добавил только:amqp и {:amqp, "~> 0.1.4"} в файле mix.exs:
def application do
[mod: {App, []},
applications: [:phoenix, :phoenix_pubsub, :phoenix_html, :cowboy, :logger, :gettext,
:phoenix_ecto, :postgrex, :amqp]]
end
defp deps do
[{:phoenix, "~> 1.2.0"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.0"},
{:postgrex, ">= 0.0.0"},
{:phoenix_html, "~> 2.6"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"},
{:amqp, "~> 0.1.4"}]
end
Какие изменения мне нужно сделать, чтобы приложение elixir работало с rabbitMQ?
Спасибо
2 ответа
Это сообщенная проблема в :amqp
проект ( https://github.com/pma/amqp/issues/28) Не удается скомпилировать с Erlang 19. Проблема заключается в :amqp_client
, Последняя версия в репозитории исправлена, но она еще не существует в виде шестнадцатеричного пакета.
Обновление 2016-08-16:
Если вы хотите использовать AMQP
с Erlang 19 в вашем проекте просто добавьте текущий :amqp_client
зависимость переопределить тот, который идет с AMQP
:
def deps do
[{:amqp_client, git: "https://github.com/jbrisbin/amqp_client.git", override: true},
{:amqp, "~> 0.1.4"}]
end
Для этого конкретного примера у вас должно быть что-то вроде:
defp deps do
[{:phoenix, "~> 1.2.0"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.0"},
{:postgrex, ">= 0.0.0"},
{:phoenix_html, "~> 2.6"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"},
{:amqp_client, git: "https://github.com/jbrisbin/amqp_client.git", override: true},
{:amqp, "~> 0.1.4"]
end
Важно: вы должны переопределить
:amqp_client
зависимость в проектах, которые используютAMQP
событие, если их файл микширования уже переопределяет зависимость.
Надеюсь, это поможет.
Я должен был определить зависимость следующим образом (информация о ветвях), чтобы заставить ее работать:
defp deps do
[
{:amqp_client, git: "https://github.com/dsrosario/amqp_client.git", branch: "erlang_otp_19", override: true},
{:amqp, "~> 0.1.4"}
]
конец