RabbitMQ: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
Строка 31: | Строка 31: | ||
</PRE> |
</PRE> |
||
===Проверка работы=== |
===Проверка работы=== |
||
+ | Скрипт получения сообщений (с хабра) который обрабатывает "таск" столько секунд сколько точек в сообщении |
||
+ | <PRE> |
||
+ | #!/usr/bin/env python |
||
+ | |||
+ | import pika |
||
+ | import time |
||
+ | |||
+ | connection = pika.BlockingConnection(pika.ConnectionParameters( |
||
+ | host='localhost')) |
||
+ | channel = connection.channel() |
||
+ | |||
+ | channel.queue_declare(queue='task_queue', durable=True) |
||
+ | print ' [*] Waiting for messages. To exit press CTRL+C' |
||
+ | |||
+ | def callback(ch, method, properties, body): |
||
+ | print " [x] Received %r" % (body,) |
||
+ | time.sleep( body.count('.') ) |
||
+ | print " [x] Done" |
||
+ | ch.basic_ack(delivery_tag = method.delivery_tag) |
||
+ | |||
+ | channel.basic_qos(prefetch_count=1) |
||
+ | channel.basic_consume(callback, |
||
+ | queue='task_queue') |
||
+ | |||
+ | channel.start_consuming() |
||
+ | </PRE> |
||
==Ссылки== |
==Ссылки== |
Версия 14:08, 6 декабря 2012
RabbitMQ
Это такой брокер очередей.
Тут будет компиляция из статей на русском и английском в переводе.
Постановка Задачи
Настроить кластер RabbitMQ
Установка RabbitMQ (отдельно стоящий)
Под CentOs 6.3 - ставлю из epel:
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm rpm -ivh /epel-release-6-7.noarch.rpm
yum install rabbitmq-server.noarch librabbitmq.x86_64 librabbitmq-devel.x86_64
Стартую с конфигом по-умолчанию:
ps -auxfw .... rabbitmq 26833 0.0 0.0 10820 464 ? S 11:05 0:00 /usr/lib64/erlang/erts-5.8.5/bin/epmd -daemon root 26836 0.0 0.0 106052 1276 ? Ss 11:05 0:00 sh -c RABBITMQ_PID_FILE=/var/run/rabbitmq/pid /usr/sbin/rabbitmq-server > /var/log/rabbitmq/startup_log 2> /var/log/rabbitmq/startup_err root 26839 0.0 0.0 106052 1356 ? S 11:05 0:00 \_ /bin/sh /usr/sbin/rabbitmq-server root 26846 0.0 0.0 145340 1544 ? S 11:05 0:00 \_ su rabbitmq -s /bin/sh -c /usr/lib/rabbitmq/bin/rabbitmq-server rabbitmq 26849 8.4 1.4 579972 27304 ? Ssl 11:05 0:00 \_ /usr/lib64/erlang/erts-5.8.5/bin/beam -W w -K true -A30 -P 1048576 -- -root /usr/lib64/erlang -progname erl -- -home /var/lib/rabbitmq -- -noshell -noinput -sname rabbitmq 26918 0.0 0.0 4048 420 ? Ss 11:05 0:00 \_ /usr/lib64/erlang/lib/os_mon-2.2.7/priv/bin/cpu_sup rabbitmq 26923 0.0 0.0 10784 520 ? Ss 11:05 0:00 \_ inet_gethost 4 rabbitmq 26924 0.0 0.0 12888 636 ? S 11:05 0:00 \_ inet_gethost 4
Проверка работы
Скрипт получения сообщений (с хабра) который обрабатывает "таск" столько секунд сколько точек в сообщении
#!/usr/bin/env python import pika import time connection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost')) channel = connection.channel() channel.queue_declare(queue='task_queue', durable=True) print ' [*] Waiting for messages. To exit press CTRL+C' def callback(ch, method, properties, body): print " [x] Received %r" % (body,) time.sleep( body.count('.') ) print " [x] Done" ch.basic_ack(delivery_tag = method.delivery_tag) channel.basic_qos(prefetch_count=1) channel.basic_consume(callback, queue='task_queue') channel.start_consuming()