Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure can';不要开着carmine mq worker_Clojure_Redis_Leiningen_Carmine - Fatal编程技术网

Clojure can';不要开着carmine mq worker

Clojure can';不要开着carmine mq worker,clojure,redis,leiningen,carmine,Clojure,Redis,Leiningen,Carmine,我试图在一个持续运行的过程中实现一个carmine worker 当使用lein run myclass.foo启动以下应用程序时,它会立即启动并停止工作程序 (def my-worker (car-mq/worker queue-server "my-queue" {:handler (fn [{:keys [message attempt]}] (println "Received" message) {:status :

我试图在一个持续运行的过程中实现一个carmine worker

当使用
lein run myclass.foo
启动以下应用程序时,它会立即启动并停止工作程序

(def my-worker
  (car-mq/worker queue-server "my-queue"
   {:handler (fn [{:keys [message attempt]}]
               (println "Received" message)
               {:status :success})
    :auto-start false}))


(defn -main []
  (car-mq/start my-worker))
我的目标是这样的

  • 启动foo侦听器
  • foo listener在前台运行,并打印发布到队列的所有内容
  • Ctrl-c/quit将关闭侦听器

    • leinfoo
      运行它是错误的方法。我编辑了整个问题,以符合我找到的“解决方案”

      主要的问题是,我使用
      lein run myclass.foo
      来运行它
      lein trampoline run myclass.foo
      启动应用程序的JVM并摆脱leiningen的JVM,这似乎正是我需要的。当使用
      trampoline
      而不是
      run
      时,应用程序不会立即退出

      第2步,关闭ctrl-c上的连接是一个简单的关闭钩子

      (.addShutdownHook (Runtime/getRuntime) (Thread. #(car-mq/stop my-worker)))
      

      你想在后台运行还是在前台运行?我认为你应该使用方便的工具将你的provis作为守护进程运行。这里有一个很好的说明如何做:。我特别推荐使用supervisor或upstart之类的工具。但是,例如,如果您想在一个单独的线程(后台)中运行worker,同时在一个主线程(前台)中执行其他操作,那么您应该从clojure应用程序中手动管理它,这很容易做到。@LeonidBeschastny据我所知,胭脂红开始一个背景线。一旦启动,carmine将返回true,应用程序将继续并退出。我想保持应用程序打开,直到手动中断,所以我猜是前台进程。