【问题标题】:Do we really need a process alive 24/7 to listen to messages in a RabbitMQ queue?我们真的需要一个 24/7 全天候运行的进程来监听 RabbitMQ 队列中的消息吗?
【发布时间】:2015-10-04 15:18:17
【问题描述】:

我是RabbitMQ 的新手,浏览了一些教程。所有样本都是监听消息的无限循环。很像套接字的作用。我的问题是,为什么我们不能在某个文件夹中放置一个简单的 .NET DLL,当收到与我的 dll 相关的消息时,RabbitMQ 应该创建一个 appdomain,添加该 DLL,调用正确的方法并销毁 appdomain?我们不能这样做吗?

【问题讨论】:

    标签: .net rabbitmq


    【解决方案1】:

    RabbitMQ 与 .NET 无关,因此 RabbitmQ 不能“创建 appdomain 并在其中添加 dll”。要接收来自 rabbit 服务的消息,您需要以某种方式连接到它。之后,您必须保持该连接才能接收传入消息。因此,至少您已经使用一些代码(例如使用官方 .NET 客户端)连接到 rabbit 服务,并且您已经保持连接。现在你收到了一条消息。当然,你可以创建新的应用程序域,在那里加载 dll,调用 dll 中的某些方法并销毁应用程序域,但你可以想象它是多么的丑陋和低效。您已经拥有该消息并且可以处理它,那么为什么还要加载其他 dll 呢?更不用说兔子经常被用于高速消息处理,而你的方法会扼杀所有性能(没有任何理由)。总而言之,您可以编写自己的 .NET 应用程序来执行您所描述的操作,但这不是“简单”的方式。

    【讨论】:

    • 我没有大量的消息。而且我希望 RabbitMQ 具有自己加载 n 调用的功能,因此我不必一直将进程保留在内存中。您的回答很准确,并且加深了我对 RabbitMQ 的理解。谢谢你
    • 即使是这样 - 将加载-n-调用您的 dll 的进程必须一直在内存中:)
    • 好吧,我认为 RabbitMQ 已经有一个 24/7 全天候运行的进程了。为什么不生成一个调用外部 dll 的线程
    • RabbitMQ server 可能有这样的进程,但我们这里说的是客户端。客户端(几乎总是位于另一台机器上)没有任何进程,除非您自己启动一个。当然,服务器进程不能在新消息上调用任何外部 dll - 这只是无稽之谈。毕竟是服务器
    猜你喜欢
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多