#clojure
#clojure
Вопрос:
Как или каким образом я мог бы вызвать свой код clojure для обработки задач в очереди RabbitMQ?
Должен ли я написать демона или что?
Я знаю, что для первоначального запуска Java-кода требуется много времени, поэтому я хотел бы надеяться, что найдется способ написать длительный процесс для запуска моего кода clojure.
Я совершенно не понимаю, в каком контейнере будет запускаться clojure, например, будет ли это демон, если да, то как написать демон clojure?
Комментарии:
1. Не могли бы вы уточнить, что это за очередь?
2. итак, какой-нибудь из ответов ответил на ваш вопрос?
Ответ №1:
Ваш вопрос немного общий, поэтому позвольте мне его разбить:
- У вас есть очередь RabbitMQ, и вы хотите получать сообщения из Clojure
- Вы хотите запустить этот приемник сообщений как отдельную программу
- Вы хотите запустить эту программу в качестве фоновой задачи
Из вашего вопроса я понимаю, что вы рассмотрели первую часть (использование сообщений RabbitMQ в clojure).
Что касается второй части вашего вопроса, запуск программы clojure автономно:
Вам нужно создать функцию main в вашем коде clojure, чтобы вы могли запускать ее как отдельную программу:
(defn -main [amp; args]
"your code")
Подробнее об этом смотрите на веб-сайте clojure. Если вы используете Leiningen в качестве инструмента сборки, вам следует указать свою основную функцию в вашем project.clj
файле, а затем создать uberjar, например
$ lein compile
$ lein uberjar
$ java -jar my-uber-jar.jar
Процедура запуска вашей программы в качестве фоновой задачи отличается для разных операционных систем. Самый простой способ запустить что-либо в фоновом режиме — добавить амперсанд после команды:
$ java -jar my-uber-jar.jar amp;
Но ваша программа завершится, когда вы закроете терминал, в котором ввели эту команду.
Комментарии:
1. Самое простое решение, позволяющее избежать завершения работы вашей программы при закрытии терминала, — использовать
nohup
( en.wikipedia.org/wiki/Nohup ). Приведенная выше команда Gert будет гласить:nohup java -jar my-uber-jar.jar amp;
Ответ №2:
Я написал сообщение в блоге о 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