【问题标题】:Elixir Phoenix RabbitMQ MatchErrorElixir Phoenix RabbitMQ MatchError
【发布时间】:2017-02-05 16:49:22
【问题描述】:

我正在创建消息应用程序,其中应用程序 A 需要使用 rabbitMQ 向应用程序 B 发送消息。我正在使用 Phoenix 进行开发,在 rabbitMQ 网站上我找到了如何使用 elixir 实现 rabbitmq 的教程,但我不知道如何在我的 Phoenix 应用程序中使用它。我尝试将在兔子教程网站上找到的代码添加到我的 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

有人帮助我如何以好的方式做到这一点?

【问题讨论】:

  • RabbitMQ 是否在 localhost 端口 5672 上运行?

标签: erlang rabbitmq elixir phoenix-framework


【解决方案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)

【讨论】:

    猜你喜欢
    • 2018-05-22
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 2016-10-22
    • 2020-02-20
    相关资源
    最近更新 更多