2016-07-05 15 views
4

Ich möchte rabbitMQ aus meiner elixier phoenix app über amqp verwenden. Ich folgte Tutorial auf official website aber noch während mix.deps compile, bekomme ich eine Fehlermeldung:Wie wird das Elixir-Projekt eingerichtet, um RabbitMQ über amqp zu verwenden?

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" 

Terminal screenshot

Ich habe nur: AMQP und {: AMQP, "~> 0.1.4"}, in mix.exs file:

Welche Änderungen muss ich machen, um meine Elixier-App mit RabbitMQ arbeiten zu lassen?

Danke

+0

Nun, das ist seltsam. Haben Sie versucht, Ihre Abhängigkeiten zu bereinigen? 'mix deps.clean --all' und dann' mix deps.get' und 'mix depps.compile'. Welche Version von Elixir benutzt du? –

+0

Ich benutze Elixir 1.3.1. Ich habe das auch versucht aber immer noch einen Fehler bekommen. –

+0

Was ist die Erlang-Version? –

Antwort

7

Es ist ein gemeldetes Problem im :amqp Projekt (https://github.com/pma/amqp/issues/28) Es schlägt fehl Compilation mit Erlang 19.em Das Problem in :amqp_client liegt. Die letzte Version im Repository ist zwar fest, existiert aber noch nicht als Hex-Paket.

-Update 2016.08.16:

Wenn Sie verwenden möchten, fügen Sie AMQP mit Erlang 19 in Ihrem Projekt nur die aktuelle :amqp_client Abhängigkeit der eine außer Kraft zu setzen, die mit AMQP kommt:

def deps do 
    [{:amqp_client, git: "https://github.com/jbrisbin/amqp_client.git", override: true}, 
    {:amqp, "~> 0.1.4"}] 
end 

Für dieses konkrete Beispiel sollten Sie etwas haben wie:

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 

Important: You should override the :amqp_client dependency in projects that use AMQP event if their mix file is already overriding the dependency.

Ich hoffe, das hilft.

+0

Yup, danke :))) –

+0

Bearbeitete die Antwort, die eine mögliche Abhilfe hinzufügt. –

+0

Ich habe kürzlich erlang aktualisiert und diesen Fehler erhalten. Ich folgte deinen Schritten und es kompilierte. Allerdings gab es eine kleine Änderung, die ich machen musste - ich musste {: amqp, github: "/amqp"} zu {: amqp_client, github: "/amqp"} und: amqp in Anwendungen für: amqp_clients. Aber jetzt gibt es diesen Fehler: Modul AMQP ist nicht geladen und konnte nicht gefunden werden [in dieser Zeile - AMQP verwenden] Können Sie mir sagen, was könnte der Grund sein und wie das zu lösen? –

7

ich die Abhängigkeit zu definieren, wie folgt hatte (Verzweigungsinformation), um es auszuführen:

defp deps do 
[ 
    {:amqp_client, git: "https://github.com/dsrosario/amqp_client.git", branch: "erlang_otp_19", override: true}, 
    {:amqp, "~> 0.1.4"} 
] 

Ende