腾讯云国际站代理商:如何在腾讯云服务器上配置消息队列(RabbitMQ)?

简介:TG@luotuoemo

本文由阿里云代理商【聚搜云】撰写

一、前提条件

  1. 购买腾讯云服务器

    • 确保已购买一台或多台腾讯云服务器(CVM),并完成初始化。
  2. 配置安全组规则

    • 在腾讯云控制台中,为服务器配置安全组规则,放通以下端口:

      • 5672:RabbitMQ 服务端口。
      • 15672:RabbitMQ 管理界面端口。

二、安装 Erlang

RabbitMQ 基于 Erlang 语言开发,因此需要先安装 Erlang。

  1. 安装依赖包

    bash复制

    yum -y install make gcc gcc-c++ m4 ncurses-devel openssl-devel unixODBC-devel
    
  2. 下载 Erlang 安装包

    bash复制

    wget http://erlang.org/download/otp_src_19.3.tar.gz
    
  3. 解压并安装 Erlang

    bash复制

    tar xzf otp_src_19.3.tar.gz
    cd otp_src_19.3
    ./configure --prefix=/usr/local/erlang --without-javac
    make && make install
    
  4. 配置环境变量

    bash复制

    echo 'export PATH=$PATH:/usr/local/erlang/bin' >> ~/.bashrc
    source ~/.bashrc
    

三、安装 RabbitMQ Server

  1. 下载 RabbitMQ Server 安装包

    bash复制

    wget https://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_6_9/rabbitmq-server-3.6.9-1.el7.noarch.rpm
    
  2. 导入签名密钥

    bash复制

    rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
    
  3. 安装 RabbitMQ Server

    bash复制

    yum install rabbitmq-server-3.6.9-1.el7.noarch.rpm
    
  4. 启动 RabbitMQ 服务

    bash复制

    systemctl enable rabbitmq-server
    systemctl start rabbitmq-server
    

四、配置 RabbitMQ

  1. 删除默认用户

    bash复制

    rabbitmqctl delete_user guest
    
  2. 创建新用户并设置权限

    bash复制

    rabbitmqctl add_user 用户名 密码
    rabbitmqctl set_user_tags 用户名 administrator
    rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"
    
  3. 启用管理插件

    bash复制

    rabbitmq-plugins enable rabbitmq_management
    

五、访问管理界面

  1. 访问 RabbitMQ 管理界面

    • 打开浏览器,访问 http://<服务器IP>:15672
    • 使用创建的用户名和密码登录。

六、测试消息队列

  1. 生产者发送消息

    Python复制

    import pika
    
    connection = pika.BlockingConnection(pika.ConnectionParameters('服务器IP', 5672, '/', pika.PlainCredentials('用户名', '密码')))
    channel = connection.channel()
    channel.queue_declare(queue='hello')
    channel.basic_publish(exchange='', routing_key='hello', body='Hello World!')
    connection.close()
    
  2. 消费者接收消息

    Python复制

    import pika
    
    def callback(ch, method, properties, body):
        print(f"Received {body}")
    
    connection = pika.BlockingConnection(pika.ConnectionParameters('服务器IP', 5672, '/', pika.PlainCredentials('用户名', '密码')))
    channel = connection.channel()
    channel.queue_declare(queue='hello')
    channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
    print('Waiting for messages. To exit press CTRL+C')
    channel.start_consuming()