如何或以什麼方式呼叫我的clojure代碼來處理RabbitMQ隊列上的任務?假設我有一個RabbitMQ隊列,並且我想編寫clojure代碼來處理隊列中的消息
我需要編寫一個守護進程或什麼?
我知道Java代碼最初需要很長時間才能啓動,所以我希望有一種方法可以爲我的clojure代碼運行時編寫一個長時間運行的進程。
我完全失去了什麼容器clojure會運行在例如它會是一個守護進程,如果是的話,如何編寫一個clojure守護進程?
如何或以什麼方式呼叫我的clojure代碼來處理RabbitMQ隊列上的任務?假設我有一個RabbitMQ隊列,並且我想編寫clojure代碼來處理隊列中的消息
我需要編寫一個守護進程或什麼?
我知道Java代碼最初需要很長時間才能啓動,所以我希望有一種方法可以爲我的clojure代碼運行時編寫一個長時間運行的進程。
我完全失去了什麼容器clojure會運行在例如它會是一個守護進程,如果是的話,如何編寫一個clojure守護進程?
你的問題有點籠統,讓我把它分解:
從你的問題我明白,你已經得到了第一部分(消費Clojure中的RabbitMQ消息) 。
對於你的問題的第二部分,運行一個Clojure的程序獨立:
你需要在你的Clojure代碼來創建一個主要功能,這樣就可以作爲一個獨立的程序運行:
(defn -main [& args]
"your code")
欲瞭解更多信息,請參閱the clojure website。如果您使用Leiningen作爲構建工具,則應在您的project.clj
文件中指定您的主要功能,然後構建一個uberjar,例如,
$ lein compile
$ lein uberjar
$ java -jar my-uber-jar.jar
的過程作爲後臺任務是爲不同的操作系統不同的運行程序。在後臺運行的東西,最簡單的方法是在命令後面添加一個符號:
$ java -jar my-uber-jar.jar &
但是,當你關閉終端您鍵入此命令你的程序將終止
關閉終端時避免程序終止的最簡單的解決方案是使用'nohup'(http://en.wikipedia.org/wiki/Nohup)。上面的Gert的命令是這樣的:'nohup java -jar my-uber-jar.jar&' – 2012-05-26 20:37:41
或者你可能想給https://github.com/arohner/lein-daemon一個鏡頭。 – 2012-05-26 20:41:48
我寫了一篇博客文章關於clojure和rabbitMQ,希望它有幫助!
它包括添加消息並從隊列中獲取消息。
http://www.learningclojure.com/2011/02/rabbitmq-clojure-hello-world.html
如果你不知道如何讓守護進程(這是相當複雜的,而且我從來沒有從Clojure的做到了),但希望有一個長期運行的進程,然後周圍的工作可能是一個屏幕會話。然後你可以在終端上運行你的程序,但仍然註銷並保持運行。
碰巧,我也曾經寫過關於屏幕的入門教程。你可以在這裏找到它:
http://johnsunixtips.blogspot.com/2010/12/most-basic-possible-screen-tutorial.h
+1用於提示屏幕! – Gert 2011-05-31 23:12:32
你能更具體一點,什麼排隊這是什麼? – Gert 2011-05-29 23:54:47
Rabbitmq將成爲隊列。 – Blankman 2011-05-30 00:00:17
任何答案都可以回答你的問題嗎? – Gert 2011-06-02 20:21:22