当前位置:   article > 正文

ubuntu下RabbitMQ安装并开启远程连接及python连接到远程rabbitmq_rabbitmq ubuntu 5672 远程访问

rabbitmq ubuntu 5672 远程访问

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

  1. 安装

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

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

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

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

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

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

  4. RabbitMQ常用命令

    rabbitmq-server start 
    
    rabbitmq-server stop   ##  不行就是试试下面的stop
    
    rabbitmq-server restart
    
    rabbitmqctl status
    
    rabbitmqctl stop
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  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'
                          )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  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)  
                              )
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
      • 消费者

        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()
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
        • 18
        • 19
        • 20
        • 21
        • 22
    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()
          
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
        • 消费者

          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()
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18
          • 19
          • 20
          • 21
          • 22
          • 23
          • 24
          • 25
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/558158
推荐阅读
相关标签
  

闽ICP备14008679号