Qpid Erlang模块

Qpid Erlang模块,erlang,queue,amqp,messages,qpid,Erlang,Queue,Amqp,Messages,Qpid,我是erlang的新手,但我使用qpid pronton c库as成功地让ActiveMQ与我的erlang shell对话,该库运行良好,我从我的erlang shell上的队列本身获取消息,反之亦然 qpidpn:subscribe("amqp://localhost/topic://xxx"). qpidpn:publish(#{address => "amqp://127.0.0.1/topic://xxx", body => "hello"}). 现在,我想使用.erl文

我是erlang的新手,但我使用qpid pronton c库as成功地让ActiveMQ与我的erlang shell对话,该库运行良好,我从我的erlang shell上的队列本身获取消息,反之亦然

qpidpn:subscribe("amqp://localhost/topic://xxx").
qpidpn:publish(#{address => "amqp://127.0.0.1/topic://xxx", body => "hello"}).

现在,我想使用.erl文件实现上述相同的代码,每当队列中有新消息时,就会调用一些函数,我可以采取进一步的措施将消息返回到源

好吧,这完全取决于您的订户是如何实现的(这是另一个进程吗,TCP侦听器,您是否使用
gen_event
行为,它是否为您解码任何数据……)

因为您使用AMQP协议进行通信,所以可以将其用作客户端。您将获得整个AMQP实现(包括对代理的所有响应),以及一些用于获取消息或订阅通道的模型。代码库是成熟的,整个项目是稳定的,大部分逻辑都是为您编写的,所以我强烈建议使用这种方法


第节对“每次我们在队列上有新消息时调用”进行了一些解释

您可以实现gen_server,因为消息似乎来自某些MQ。因此,您可以在handle_info中获取消息。一旦到了那里,你可以用它们做任何你想做的事情

感谢mpm,但有一个要求,因此不能使用任何其他MQ。但是,他试图开发代码/模块,该模块可以将来自生产者的消息反映到逻辑服务器,但并没有从中得到多少好处。这将取决于如何将C代码与Erlang(NIF、驱动程序或端口)绑定。请给我们更多的信息。我可以建议大家走低谷,再次建议大家使用RabbitMQ。您将仅将其用作ActiveMQ代理的客户端,而不会更改AMQP协议。它看起来应该和Erlang以外的地方没有什么不同。谢谢mpm,好的。我现在将尝试提供更详细的信息。首先,我现在不能使用任何其他MQ,因为它只是一些需求。其次,当使用iex shell时,我通过qpid erlang库(如iex--erl“-pa ebin-env DYLD_library_PATH./priv-env LD_library_PATH./priv-s qpidn start)使用proto c函数。因此,现在如果我想制作新的Elixir/Erlang应用程序,假设我想使用相同的命令从bash脚本访问库函数。这意味着使用Elixir中已编译的库来访问proton c库函数。