Using RabbitMQ C# and Elixir

本文关键字:Elixir and RabbitMQ Using | 更新日期: 2023-09-27 18:16:28

我以前从未使用过RabbitMQ,不知道它是否适合我。我有几个问题。

我有一个c#。NET应用程序,另一边我有一个长生不老的应用程序。

我想在它们之间交换数据,例如,elixir会从c#请求一个人员列表。NET应用程序,它会返回需要长生不老药的人的名单

我如何在elixir中接收数据?长生不老药里没有对象。

如果我从c#发送一个对象Person。NET到elixir,我在elixir中能得到什么?

Using RabbitMQ C# and Elixir

elixir中没有对象

正因为没有像c#这样面向对象(OO)语言意义上的对象,函数式语言仍然有数据集合的构造。在Elixir的例子中,这三大元素是记录、结构和地图。当你要使用的每一个都超出了这个答案的范围。

我如何在elixir中接收数据?

这完全取决于应用程序的语义以及您在每个应用程序中实际使用数据的方式。

作为一个例子,如果应用程序X需要向应用程序Y请求其信息的某个子集(可能是年龄在20-30岁之间的用户列表),您可以考虑在应用程序Y中设置某种web可访问的端点,它可以过滤该信息并返回JSON,然后应用程序X可以使用该JSON并做任何它需要做的事情。

你可能想要使用RabbitMQ或其他消息队列的一个原因是,如果你想在不同的机器上对事件进行某种处理,而不是事件起源的机器。

如果我从c#发送一个对象Person。NET到elixir,我在elixir中能得到什么?

c#不能直接与Elixir对话

除了Justin的答案,你可能还想研究Erlang Term Format,这是Elixir和其他语言之间的另一个互操作选项。这里有一个c#的ETF实现,但我不知道这个库的质量如何。

除了Justin的建议之外,您还需要考虑的不是发送"对象",而是发送对象实例中的数据。与其发送Person,然后尝试在Elixir端挑选数据,不如在离散调用中发送来自Person的数据片段——e。g. Person.FirstName, Person.LastName等。您可以从特定实例传递数据,而不必传递整个对象。ETF将帮助c#和Elixir之间的数据通信。即使你把数据塞进RabbitMQ队列,你也可以把它作为离散的数据块放在队列中,而不是一个"对象"。