ubuntu下RabbitMQ安装并开启远程连接及python连接到远程rabbitmq

8 篇文章 0 订阅
4 篇文章 0 订阅

RabbitMQ安装并开启远程连接及python连接到rabbitmq

  1. 安装

    # 由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlang
    apt install erlang-nox
    
    # 安装RabbitMQ
    apt install rabbitmq-server
    
  2. 添加远程访问的用户

    # 1. 添加用户
    rabbitmqctl add_user ant 123456
    # 2. 设置ant的角色信息,这里设置为超级管理员管理角色(可登陆web管理界面,可查看所有的信息,并且可以对用户,策略(policy)进行操作)
    rabbitmqctl set_user_tags ant administrator
    
  3. 开启远程访问

    1. 如果要是用web管理界面需要执行以下命令

      rabbitmq-plugins enable rabbitmq_management   
      
    2. 开启远程访问

      rabbitmqctl set_permissions -p "/" ant "." "." ".*"
      
    3. web管理界面连接地址

      http://192.168.1.42:15672
      
    4. RabbitMQ默认开启的端口号port:5672

  4. RabbitMQ常用命令

    rabbitmq-server start 
    
    rabbitmq-server stop   ##  不行就是试试下面的stop
    
    rabbitmq-server restart
    
    rabbitmqctl status
    
    rabbitmqctl stop
    
  5. python连接到RabbitMQ

    import pika
    
    # 连接rabbitmq
    
    auth = pika.PlainCredentials('ant','123456')
    connect = pika.BlockingConnection(pika.ConnectionParameters("ip", port=5672, virtual_host='/', credentials=auth))
    channel = connect.channel()
    
    # 创建队列
    channel.queue_declare(queue="hello")
    
    channel.basic_publish(exchange='',  routing_key="hello", body='hello')
    # 向指定队列插入数据
    channel.basic_publish(exchange='',  # 简单模式
                          routing_key="hello",  # 指定队列
                          body='hello'
                          )
    
  6. 生产者消费者模式

    1. 简单模式

      • 生产者

        import pika
        
        # 连接rabbitmq
        
        auth = pika.PlainCredentials(username,password)
        connect = pika.BlockingConnection(pika.ConnectionParameters("ip", port=5672, virtual_host='/', credentials=auth))
        channel = connect.channel()
        
        # 创建队列
        channel.queue_declare(queue="hello",durable=False)  # durable持久化参数, 默认为False,如果需要持久化存储改为True即可
        
        # 向指定队列插入数据
        channel.basic_publish(exchange='',  # 简单模式
                              routing_key="hello",  # 指定队列
                              body='tt',   # 插入的数据
                              # 持久化存储,需要创建的队列为持久化队列 , 即durable=True时,需要带以下代码
                              #properties=pika.BasicProperties(delivery_mode=2)  
                              )
        
      • 消费者

        import pika
        
        auth = pika.PlainCredentials('ant','123456')
        connect = pika.BlockingConnection(pika.ConnectionParameters("ip", port=5672, virtual_host='/', credentials=auth))
        channel = connect.channel()
        
        channel.queue_declare(queue='hello', durable=False)   
        
        
        def callback(ch, method, properties, body):
        
            print(" [x] Received %r" % body)
        
        #True默认应答取数据的时候就把数据删除了
        #False取数据之后不会删除数据
        #如果要删除数据需要在回调函数处理完成之后添加 ch.basic_ack(delivery_tag=method.delivery_tag)
        channel.basic_consume(queue='hello',
                              auto_ack=True,   
                              on_message_callback=callback)
        
        print(' [*] Waiting for messages. To exit press CTRL+C')
        channel.start_consuming()
        
    2. 交换机模式

      1. 发布订阅

        • 生产者

          import pika
          
          auth = pika.PlainCredentials('ant','123456')
          connect = pika.BlockingConnection(pika.ConnectionParameters("ip", port=5672, virtual_host='/', credentials=auth))
          channel = connect.channel()
          # print(channel)
          
          # 创建交换机, exchange_type类型fanout:发布订阅模式, direct:关键字模式, topic : 通配符模式
          change = channel.exchange_declare(exchange='logs', exchange_type='fanout')
          
          # 插入数据
          
          channel.basic_publish(exchange='logs',
                                routing_key='',
                                body=b'fkoepwkp'
          
                                )
          print("生产数据完成")
          connect.close()
          
          
        • 消费者

          import pika
          
          auth = pika.PlainCredentials('ant','123456')
          connect = pika.BlockingConnection(pika.ConnectionParameters("ip", port=5672, virtual_host='/', credentials=auth))
          channel = connect.channel()
          # print(channel)
          
          # 创建交换机, exchange_type类型fanout:发布订阅模式, direct:关键字模式, topic : 通配符模式
          change = channel.exchange_declare(exchange='logs', exchange_type='fanout')
          
          # 创建队列
          result = channel.queue_declare('', exclusive=True)
          queue_name = result.method.queue
          # 绑定队列 , routing_key  绑定关键字参数
          channel.queue_bind(exchange='logs', queue=queue_name)
          
          # 插入数据
          def callback(ch, method, properties, body):
          
              print(" [x] Received %r" % body)
          
          
          channel.basic_consume(queue=queue_name, auto_ack=True, on_message_callback=callback)
          
          channel.start_consuming()
          
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序烂人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值