Python操作RabbitMQ

本文介绍了如何使用pika库在Python中与RabbitMQ进行消息通信,包括发送和接收消息的示例代码。

RabbitMQ做外AMQP的实现,现在在很多企业中作为消息中心在运用。

 

RabbitMQ在Python中,采用pika工具进行操作。在之前的版本里,也有采用py-amqplib工具,但后面几乎不再采用。

 

以下是笔者的一两个小实验。

 

getMessage.py

#!/usr/bin/env python
import pika
import random

credentials = pika.PlainCredentials('crawler', 'Abc12345')

parameters = pika.ConnectionParameters('192.168.161.110',5672,'crawler',credentials) 
connection = pika.BlockingConnection(parameters)
channel = connection.channel()

print ' [*] Waiting for messages. To exit press CTRL+C'    
        
def callback(ch, method, properties, body):    
    print " [x] Received %r" % (body,)    
        
channel.basic_consume(callback,queue='taobao.policy',no_ack=True)    
        
channel.start_consuming()    

 

 

sendMessage.py

 

#!/usr/bin/env python
import pika
import random

credentials = pika.PlainCredentials('crawler', 'Abc12345')

parameters = pika.ConnectionParameters('192.168.161.110',5672,'crawler',credentials) 
connection = pika.BlockingConnection(parameters)
channel = connection.channel()

print ' [*] Waiting for messages. To exit press CTRL+C'    
        
def callback(ch, method, properties, body):    
    print " [x] Received %r" % (body,)    
        
channel.basic_consume(callback,queue='taobao.policy',no_ack=True)    
        
channel.start_consuming()    

 

 References:

http://pika.readthedocs.org/en/0.9.14/

### 使用Python连接和操作RabbitMQ 为了利用PythonRabbitMQ进行交互,通常会采用`pika`库作为客户端工具[^1]。此库提供了丰富的API接口以便于开发者能够轻松地实现消息的发送与接收功能。 #### 安装Pika库 在开始编码前,需确保已安装好`pika`库。可以通过执行如下命令完成安装: ```bash pip install pika ``` #### 创建生产者脚本 下面是一个简单的例子展示怎样创建一个向队列中发布消息的应用程序: ```python import pika def send_message(queue_name, message_body): connection = pika.BlockingConnection( pika.ConnectionParameters(host='localhost')) channel = connection.channel() channel.queue_declare(queue=queue_name) channel.basic_publish(exchange='', routing_key=queue_name, body=message_body) print(f" [x] Sent '{message_body}'") connection.close() if __name__ == '__main__': queue_name = 'hello' message = "Hello World!" send_message(queue_name, message) ``` 这段代码定义了一个函数`send_message()`用来初始化一个新的连接实例,并声明目标队列名称以及要传递的消息体内容。之后通过调用`basic_publish()`方法将指定的信息推送到给定的目标队列里去[^2]。 #### 构建消费者应用 同样地,也可以构建另一个应用程序来监听特定队列中的新到来的数据包并处理它们: ```python import pika import time def callback(ch, method, properties, body): print(f" [x] Received {body}") time.sleep(body.count(b'.')) print(" [x] Done") ch.basic_ack(delivery_tag=method.delivery_tag) def receive_messages(queue_name): connection = pika.BlockingConnection( pika.ConnectionParameters('localhost')) channel = connection.channel() channel.queue_declare(queue=queue_name) channel.basic_consume(queue=queue_name, on_message_callback=callback) print(' [*] Waiting for messages. To exit press CTRL+C') try: channel.start_consuming() except KeyboardInterrupt: channel.stop_consuming() connection.close() if __name__ == '__main__': queue_name = 'task_queue' receive_messages(queue_name) ``` 在这个版本里面,每当接收到一条新的数据项时就会触发回调函数`callback()`来进行相应的业务逻辑运算;而当所有的任务都完成后则会确认该条目已被成功消费掉[^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值