码迷,mamicode.com
首页 > 编程语言 > 详细

Python-RabbitMQ(简单发送模型)

时间:2018-06-29 19:19:28      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:method   highlight   本机   模型   消费者   情况   close   host   接收   

RabbitMQ需要 erlang 和pika

发送端:生产者

import pika

connection = pika.BlockingConnection(
    pika.ConnectionParameters(‘localhost‘))
channel =connection.channel()#声明一个管道,在管道里发消息

#声明queue
channel.queue_declare(queue=‘hello‘)#在管道里还得声明一个队列


channel.basic_publish(exchange=‘‘,
                      routing_key=‘hello‘,#就是列队queue名字
                      body=‘Hello World‘#消息内容
                      )
print(" [x] Sent ‘Hello World!‘")
connection.close()#不用关闭管道,关闭连接就行

 接收端:消费者

import pika

# 建立到达RabbitMQ Server的connection
# 此处RabbitMQ Server位于本机-localhost
connection = pika.BlockingConnection(pika.ConnectionParameters(
    host=‘localhost‘))
channel = connection.channel()

# 声明queue,确认要从中接收message的queue
# queue_declare函数是幂等的,可运行多次,但只会创建一次
# 若可以确信queue是已存在的,则此处可省略该声明,如producer已经生成了该queue
# 但在producer和consumer中重复声明queue是一个好的习惯
channel.queue_declare(queue=‘hello‘)

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


# 定义回调函数
# 一旦从queue中接收到一个message回调函数将被调用
# ch:channel
# method:
# properties:
# body:message
def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)


# 从queue接收message的参数设置
# 包括从哪个queue接收message,用于处理message的callback,是否要确认message
# 默认情况下是要对消息进行确认的,以防止消息丢失。
# 此处将no_ack明确指明为True,不对消息进行确认。
channel.basic_consume(callback,
                      queue="hello",
                      no_ack=True)

# 开始循环从queue中接收message并使用callback进行处理
channel.start_consuming()

 

Python-RabbitMQ(简单发送模型)

标签:method   highlight   本机   模型   消费者   情况   close   host   接收   

原文地址:https://www.cnblogs.com/fuyuteng/p/9244877.html

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