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