【问题标题】:How can I make publish and subscribe in one file?如何在一个文件中发布和订阅?
【发布时间】:2020-02-12 01:45:07
【问题描述】:

我想通过发送消息(rabbitmq)来简化应用程序。运行程序时,我想编写消息并接收它(在同一个控制台中)。那么我该如何编写一个“订阅”方法,它将一直运行(在启动程序之后)并等待接收消息?同时当然我应该能够写一条消息

【问题讨论】:

  • 我也很好奇。

标签: rabbitmq elixir


【解决方案1】:

创建一个受监督的应用程序(混合新的 my_app --sup )。 您实现了两个 GenServer,一个用于接收 (MyApp.Reader),另一个用于发送 (MyApp.Writer)。您将 GenServer 添加为主管规范中的工作人员。

我猜您的 RabbitMQ 适配器(从未将它与 elixir 一起使用,因此您必须仔细检查)也将受到监督。命名它,并将其名称传递给 GenServer init 方法(例如,通过您在声明工作人员时传递的参数)

您也可以直接在 MyApp 中为编写器实现 API。比如:

  def send(message) do
    GenServer.cast(:name_of_writer, $message)
  end

然后你就可以这样做了:MyApp.send("some message")

您的接收器工作人员将接收所有消息,并使用检查或记录器模块将它们打印到 CLi

看看the GenServer docs,有一些代码示例可以帮助你。

【讨论】:

    猜你喜欢
    • 2022-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多