如何在一个文件中进行发布和订阅?

时间:2016-09-20 09:47:48

标签: rabbitmq elixir

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

1 个答案:

答案 0 :(得分:0)

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

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

您还可以直接在MyApp中为编写器实现API。类似的东西:

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

然后您就可以:MyApp.send("some message")

您的接收方工作人员会在其旁边接收所有消息,并使用inspect或Logger模块将其打印到CLi

看一下GenServer文档,有一些代码示例可以帮助您:http://elixir-lang.org/docs/stable/elixir/GenServer.html