不能让胭脂红mq工人保持开放状态

时间:2015-04-30 08:03:58

标签: clojure redis leiningen carmine

我试图在一个不断运行的过程中实施胭脂红工人。

使用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侦听器在前台运行并打印发布到队列的所有内容
  • Ctrl-c / quit将关闭监听器

1 个答案:

答案 0 :(得分:0)

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

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

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

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