我正在创建消息应用,其中应用A需要使用rabbitMQ向应用B发送消息。我正在使用Phoenix开发并在rabbitMQ网站上发现教程如何使用elixir实现rabbitmq,但我不知道如何在我的Phoenix应用程序中使用它。我尝试将我在Rabbit教程网站上找到的代码添加到我的Phoenix page_controller.ex
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
但我收到此错误
no match of right hand side value: {:error, :econnrefused}
第6行
{:ok, connection} = AMQP.Connection.open
有人帮助我如何以良好的方式做到这一点?
答案 0 :(得分: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)