码迷,mamicode.com
首页 > 其他好文 > 详细

RabbitMQ

时间:2016-12-16 09:49:15      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:more   队列   locking   cer   span   producing   receive   nothing   blocking   

Introduction

RabbitMQ is a message broker. The principal idea is pretty simple: it accepts and forwards messages. You can think about it as a post office: when you send mail to the post box you‘re pretty sure that Mr. Postman will eventually deliver the mail to your recipient. Using this metaphor RabbitMQ is a post box, a post office and a postman.

RabbitMQ和通常意义上的消息发送,用下面行话:

  • Producing means nothing more than sending. A program that sends messages is a producer. We‘ll draw it like that, with "P":

    技术分享
  • A queue is the name for a mailbox. It lives inside RabbitMQ. Although messages flow through RabbitMQ and your applications, they can be stored only inside a queue. A queue is not bound by any limits, it can store as many messages as you like ? it‘s essentially an infinite buffer. Many producers can send messages that go to one queue, many consumers can try to receive data from one queue. A queue will be drawn as like that, with its name above it:

    技术分享
  • Consuming has a similar meaning to receiving. A consumer is a program that mostly waits to receive messages. On our drawings it‘s shown with "C":

     技术分享

     

helloworld例子

生产者发送消息到队列,消费者取出消息并打印。

技术分享

send.py

#!/usr/bin/env python
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters(
        host=localhost))
channel = connection.channel()

channel.queue_declare(queue=hello)

channel.basic_publish(exchange=‘‘,
                      routing_key=hello,
                      body=Hello World!)
print(" [x] Sent ‘Hello World!‘")
connection.close()

receive.py

#!/usr/bin/env python
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters(
        host=localhost))
channel = connection.channel()

channel.queue_declare(queue=hello)

def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)

channel.basic_consume(callback,
                      queue=hello,
                      no_ack=True)

print( [*] Waiting for messages. To exit press CTRL+C)
channel.start_consuming()

 

RabbitMQ

标签:more   队列   locking   cer   span   producing   receive   nothing   blocking   

原文地址:http://www.cnblogs.com/xiaoming279/p/6184534.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!