zoukankan      html  css  js  c++  java
  • RabbitMQ Hello篇

    生产者:

    #!/usr/bin/env python
    #coding:utf-8
    
    import pika
    #连接到服务上的broker
    SERVER_IP = "106.2.111.53"
    PORT = 5672
    credentials = pika.PlainCredentials("admin", "admin")
    parameters = pika.ConnectionParameters(SERVER_IP, PORT, '/', credentials)
    connection = pika.BlockingConnection(parameters)
    channel = connection.channel()
    
    '''
    新建队列(hello)
        如果我们向不在的队列发送消息会被rabbitmq丢弃
    '''
    channel.queue_declare(queue='hello')
    
    '''
    消息通过exchange发送给队列(消息不会直接发送给队列)
    一个空字符串标识的默认exchange, 允许我们精确指定消息应该发送到那个队列
    队列名字通过routing_key参数来指定
    '''
    channel.basic_publish(exchange='', routing_key="hello", body="Hello,RabbitMQ")
    print("[x]Productor send 'Hello RabbitMQ'")
    connection.close()

    消费者:

    #!/usr/bin/env python
    #coding:utf-8
    
    import pika
    
    SERVER_IP = "106.2.111.53"
    PORT = 5672
    credentials = pika.PlainCredentials("admin", "admin")
    parameters = pika.ConnectionParameters(SERVER_IP, PORT, '/', credentials)
    connection = pika.BlockingConnection(parameters)
    channel = connection.channel()
    #确保队列存在,多次执行,只有一个队列被创建
    channel.queue_declare(queue="hello")
    
    def callback(ch, method, properties, body):
        print("[x]Customer Received %r" %body)
    
    #从队列hello中接收消息--队列必须存在
    channel.basic_consume(callback, queue="hello", no_ack=True)
    print("[*]Waiting for messages. To exit press Ctrl+C")
    #进入无限循环,等待数据,并在需要的时候运行callbacks
    channel.start_consuming()

    eg:生产者循环1-100 发送消息,启动两个消费者,如下图

  • 相关阅读:
    数据结构做题一些总结
    ExecuteNoQuery执行, 报错“go”附近有语法错误。
    EF总结
    哨兵模式
    Redis 发布订阅
    Redis 持久化
    Redis 事务 和乐观锁
    缓存穿透和雪崩
    Redis 基础知识
    Redis 三种特殊的数据类型
  • 原文地址:https://www.cnblogs.com/jachin/p/5503278.html
Copyright © 2011-2022 走看看