RabbitMQ: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
Строка 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()

Ссылки