2016-09-27 13 views
1

私は、アプリAがrabbitMQを使用してアプリBにメッセージを送信する必要があるメッセージングアプリを作成しています。私はPhoenixを使って開発しています。rabbitMQウェブサイトでは、エリクシールでrabbitmqを実装する方法をチュートリアルで見つけましたが、Phoenixアプリケーションで使用する方法はわかりません。私はフェニックスpage_controller.exElixir Phoenix RabbitMQ MatchError

defmodule ApplicationA.PageController do 
    use ApplicationA.Web, :controller 
    use AMQP 

    def index(conn, _params) do 
    {:ok, connection} = AMQP.Connection.open 
    {:ok, channel} = AMQP.Channel.open(connection) 

    AMQP.Queue.declare(channel, "hello") 

    AMQP.Basic.publish(channel, "", "hello", "Hello World!") 
    IO.puts " [x] Sent 'Hello World!'" 

    AMQP.Connection.close(connection) 

    render conn, "index.html" 
    end 
end 

に私はウサギのチュートリアルのWebサイト上で見つけるのコードを、追加しようとしましたが、私はラインでこのエラーに

no match of right hand side value: {:error, :econnrefused} 

を得る6

{:ok, connection} = AMQP.Connection.open 

Con誰かが私が良いやり方でこれをどうやってやるべきか教えてください。

+0

はRabbitMQのは、localhostのポート5672上で動作していますか? – Dogbert

答えて

1

RabbitMQの接続設定を指定する必要があります。

のようなあなたのconfig/dev.exsなものに追加します。

config :my_app, :rabbitmq, 
    host: "${RABBITMQ_HOSTNAME}", 
    port: 5672, 
    username: "${RABBITMQ_UID}", 
    password: "${RABBITMQ_PWD}" 

し、それらをロードします。

rabbit_settings = Application.get_env :my_app, :rabbitmq 
{:ok, connection} = AMQP.Connection.open(rabbit_settings) 
関連する問題