Скажем, у меня есть очередь RabbitMQ, и я хочу написать код clojure для обработки сообщений в очереди - PullRequest
3 голосов
/ 30 мая 2011

Как или каким образом я буду вызывать мой код clojure для обработки задач в очереди RabbitMQ?

Должен ли я написать демона или как?

Я знаю, что для запуска java-кода требуется много времени, поэтому я надеюсь, что найдется способ написать длительный процесс для запуска моего кода clojure.

Я совершенно заблудился относительно того, в каком контейнере закроется контейнер, например. будет ли это демон, если да, как написать демон clojure?

Ответы [ 2 ]

5 голосов
/ 30 мая 2011

Ваш вопрос немного общий, поэтому позвольте мне разбить его на части:

  1. У вас есть очередь RabbitMQ, и вы хотите получать сообщения из Clojure
  2. Вы хотите запуститьпотребитель этого сообщения как отдельная программа
  3. Вы хотите запустить эту программу в качестве фоновой задачи

Из вашего вопроса я понимаю, что у вас есть первая часть (использование сообщений RabbitMQ вClojure).

Для второй части вашего вопроса, запустите автономную программу clojure:

Вам необходимо создать основную функцию в вашем коде clojure, чтобы вы могли запускать ее как автономнуюпрограмма:

(defn -main [& args]
  "your code")

Подробнее об этом см. на сайте clojure .Если вы используете Leiningen в качестве инструмента для сборки, вы должны указать свою основную функцию в файле project.clj, а затем создать uberjar , например,

$ lein compile
$ lein uberjar
$ java -jar my-uber-jar.jar

Процедура запуска вашей программы в качестве фоновой задачи различна для разных операционных систем.Самый простой способ запустить что-то в фоновом режиме - добавить после команды амперсанд:

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

Но ваша программа завершит работу, когда вы закроете терминал, в который вы ввели эту команду.

4 голосов
/ 30 мая 2011

Я написал сообщение в блоге о 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...