1

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

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

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

4

2 回答 2

1

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

于 2014-07-22T03:34:22.967 回答
0

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

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

每次我们在队列上有新消息时调用”在订阅 que部分中有所解释。

于 2014-06-30T14:57:04.010 回答