记录两个用pika和kombu实现的rabbitmq队列操作
来源:互联网 发布:js统计按钮点击次数 编辑:程序博客网 时间:2024/05/17 03:24
用kombu的
import ConfigParserfrom kombu import Connection#from log import loggerclass PyRabbitmq(object): def __init__(self): self.user = 'nova' self.conn = None def rbt_connection(self): cf = ConfigParser.ConfigParser() cf.read("/etc/nova/nova.conf") 从配置文件中获取rabbit的主机和密码 pwd = cf.get("DEFAULT", "rabbit_password") hosts = cf.get("DEFAULT", "rabbit_hosts") hosts_list = hosts.split(',') HA中有多个rabbit主机 for host_list in hosts_list: 依次链接rabbit,知道链接成功 url = 'amqp://%s:%s@%s//' %(self.user, pwd, host_list) try: self.conn = Connection(url) except Exception as e:# logger.error("connect rabbitmq failed: %s" % e) print "1" def rbt_disconnect(self) 断开连接 self.conn.release() self.conn = None def get_fence_nodes(): simple_queue = self.conn.SimpleQueue('simple_queue') 获取队列名为 <span style="font-family: Arial, Helvetica, sans-serif;">simple_queue 的内容</span> if simple_queue.qsize() == 0: fence_nodes = simple_queue.close() return fence_nodes else: msg = simple_queue.get(block=True, timeout=1) 得到里面的数据 fence_nodes = msg.payload msg.ack() simple_queue.close() return fence_nodes def set_fence_nodes(fence_nodes): simple_queue = self.conn.SimpleQueue('simple_queue') 连接到队列 simple_queue.put(fence_nodes) 数据传入队列 simple_queue.close()
import pikaimport ConfigParserimport json#from log import loggerclass PyRabbitmq(object): def __init__(self): self.user = 'nova' self.port = 5673 self.msg_list = None self.rbt_connection() def rbt_connection(self): cf = ConfigParser.ConfigParser() cf.read("/etc/nova/nova.conf") 从配置文件中获取数据 pwd = cf.get("DEFAULT", "rabbit_password") hosts = cf.get("DEFAULT", "rabbit_hosts") hosts_list = hosts.split(',') for host_list in hosts_list: host = host_list.split(':') credential = pika.PlainCredentials(self.user, pwd) try: pid = pika.ConnectionParameters(host[0], self.port, '/', credential) connection = pika.BlockingConnection(pid) self.channel = connection.channel() self.channel.exchange_declare(exchange='first', type='fanout') self.channel.queue_declare(queue='fence_nodes') self.channel.queue_bind(exchange='first', queue='fence_nodes')# return channel except Exception as e:# logger.error("connect rabbitmq failed: %s" % e) print "1" def callback(self, ch, method, properties, body): print body self.msg_list = body def publish(self, msg_list): 传入数据# channel = self.rbt_connection()# channel.exchange_declare(exchange='first', type='fanout')# channel.queue_declare(queue='fence_nodes')# channel.queue_bind(exchange='first', queue='fence_nodes') msg = json.dumps(msg_list) print msg self.channel.basic_publish(exchange='first', routing_key='', body=msg) def consume(self):获取数据# channel = self.rbt_connection()# channel.queue_declare(queue='fence_nodes') self.channel.basic_consume(self.callback, queue='fence_nodes', no_ack=True) if not self.msg_list: return self.msg_list else: msg = json.loads(self.msg_list) return msgdef get_fence_nodes(): rbt_obj = PyRabbitmq() fence_nodes = rbt_obj.consume() if not fence_nodes: fence_nodes = {} return fence_nodes else: rbt_obj.publish(fence_nodes) return fence_nodesdef put_fence_nodes(fence_nodes): rbt_obj = PyRabbitmq() rbt_obj.consume() if fence_nodes: rbt_obj.publish(fence_nodes)
0 0
- 记录两个用pika和kombu实现的rabbitmq队列操作
- python pika 操作 rabbitmq
- Python操作RabbitMQ之Pika
- AMQP,RabbitMQ,Qpidd和Kombu
- 用两个栈实现队列的操作
- 用两个栈实现队列的操作
- 用两个栈来实现一个队列,完成队列的add和poll、peek操作。
- 用两个栈来实现一个队列,完成队列的Push和Pop操作
- 用两个栈来实现一个队列,完成队列的Push和Pop操作
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。
- 6.用两个栈来实现一个队列,完成队列的Push和Pop操作
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。
- 用两个栈实现队列 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 其器
- MD5验签
- Handler的使用
- mysql5.7.15的安装
- <a>和<p>标签的各自的包裹问题
- 记录两个用pika和kombu实现的rabbitmq队列操作
- mysql数据类型
- Java内存机制
- redis学习笔记2--单机数据库的实现
- jsondingding
- 【阿里云】MNS消息队列常见问题及解决方法
- 如何使用Android Studio把自己的Android library分享到jCenter和Maven Central
- 【CF 125D】 Two progressions 划分等差数列
- RESTFUL和http理解