簡體   English   中英

Elixir Phoenix RabbitMQ MatchError

[英]Elixir Phoenix RabbitMQ MatchError

我正在創建消息傳遞應用程序,其中應用程序 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 指定連接設置。

在您的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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM