假设我有一个RabbitMQ队列,我想编写clojure代码来处理队列上的消息

假设我有一个RabbitMQ队列,我想编写clojure代码来处理队列上的消息,clojure,Clojure,我将如何或以何种方式调用clojure代码来处理RabbitMQ队列上的任务 我需要写一个守护进程还是什么 我知道java代码最初启动需要很长时间,所以我希望有一种方法可以为我的clojure代码编写一个长时间运行的流程 我完全不知道clojure将在哪个容器中运行,例如,它是否是一个守护程序,如果是,如何编写clojure守护程序?您的问题有点笼统,所以让我来详细分析一下: 您有一个RabbitMQ队列,并且希望使用Clojure中的消息 您希望将此消息使用者作为独立程序运行 您想将此程序作为

我将如何或以何种方式调用clojure代码来处理RabbitMQ队列上的任务

我需要写一个守护进程还是什么

我知道java代码最初启动需要很长时间,所以我希望有一种方法可以为我的clojure代码编写一个长时间运行的流程


我完全不知道clojure将在哪个容器中运行,例如,它是否是一个守护程序,如果是,如何编写clojure守护程序?

您的问题有点笼统,所以让我来详细分析一下:

  • 您有一个RabbitMQ队列,并且希望使用Clojure中的消息
  • 您希望将此消息使用者作为独立程序运行
  • 您想将此程序作为后台任务运行
  • 从您的问题中,我了解到您已经了解了第一部分(在clojure中使用RabbitMQ消息)

    关于问题的第二部分,独立运行clojure程序:

    您需要在clojure代码中创建一个主函数,以便将其作为独立程序运行:

    (defn -main [& args]
      "your code")
    
    有关这方面的更多信息,请参阅。如果您将其用作构建工具,则应在
    project.clj
    文件中指定主要功能,然后构建uberjar,例如

    对于不同的操作系统,将程序作为后台任务运行的过程是不同的。在后台运行某些内容的最简单方法是在命令后添加一个符号和:

    $ java -jar my-uber-jar.jar &
    

    但是当您关闭键入此命令的终端时,您的程序将终止。

    我写了一篇关于clojure和rabbitMQ的博客文章,希望对您有所帮助

    它包括向队列中添加消息和从队列中获取消息

    如果您不知道如何创建守护进程(这相当复杂,我从clojure那里从来没有做过),但需要一个长时间运行的进程,那么解决方法可能是一个屏幕会话。然后,您可以在终端上运行程序,但仍然要注销并保持其运行

    碰巧,我还写过一篇关于屏幕的入门教程。你可以在这里找到它:


    关于这是什么队列,你能说得更具体一点吗?答案中有没有回答你的问题?避免程序在关闭终端时终止的最简单解决方案是使用
    nohup
    ()。上面Gert的命令是:
    nohupjava-jarmy-uber-jar.jar&
    $ java -jar my-uber-jar.jar &