1. 安装pika库
    这是一个用于与RabbitMQ通信的Python客户端库。用以下命令安装: pip install pika
  2. 安装服务端
    2.1 由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlang,执行命令: apt-get install erlang-nox
    执行erl # 查看relang语言版本,成功执行则说明erlang安装成功
    2.2 添加公钥
    wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
    这一步可能报错 E: gnupg, gnupg2 and gnupg1 do not seem to be installed 使用命令apt-get install gnupg解决
    2.3 安装主体
    apt-get update
    apt-get install rabbitmq-server
    2.4 启动rabbitmq
    service rabbitmq-server start

2.5(可选)安装web端可视化插件
rabbitmq-plugins enable rabbitmq_management
service rabbitmq-server restart
3. 配置远程连接
3.1 默认会创建guest用户,但是只能服务器本机登录,建议创建其他新用户,授权,用来做其他操作。
默认运行端口为5672 默认网页可视化端口为15672 websocket的默认端口是15674
rabbitmqctl add_user xxx(username) xxxxx(password) # 增加普通用户
rabbitmqctl set_user_tags xxx(username) administrator # 给普通用户分配管理员角色
rabbitmqctl set_permissions -p / xxxx(username) ‘.’ '.’ ‘.*’ 赋予virtual host中所有资源的配置、写、读权限以便管理其中的资源,也是添加远程访问权限
(如果配置了可视化插件 可以以在你的浏览器上输入:http://服务器Ip:15672/ 来访问你的rabbitmq监控页面。使用刚刚添加的新用户登录。)
3.2 修改默认运行端口

 新增配置文件 vim /etc/rabbitmq/rabbitmq.conf 
 #默认client端口为5672
 listeners.tcp.default=xxxx
 #默认界面管理端口为15672
 management.tcp.port=xxxxx

 修改rabbitmq-defaults文件,添加配置文件路径
 vim /usr/lib/rabbitmq//lib/rabbitmq_server-3.9.15/sbin/rabbitmq-defaults
 添加这句 
 #添加配置路径到文件中,保存退出
 CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf
 
 最后重启rabbitmq服务就ok       service rabbitmq-server restart

3.3 开通STOMP通道 方便前端用websocket连接(一般是stompjs)
rabbitmq-plugins enable rabbitmq_web_stomp
rabbitmq-plugins enable rabbitmq_web_stomp_examples

 最后重启rabbitmq服务就ok       service rabbitmq-server restart
  1. python使用
    生产者:
    import pika
    RABBITMQ_HOST = ‘0.0.0.0’
    RABBITMQ_PORT = 8989
    RABBITMQ_USER = ‘root’
    RABBITMQ_PASSWORD = ‘root’
    RABBITMQ_VHOST = ‘/’
    def publish_message(message):
    connection = pika.BlockingConnection(pika.ConnectionParameters(
    host=RABBITMQ_HOST,
    port=RABBITMQ_PORT,
    virtual_host=RABBITMQ_VHOST,
    credentials=pika.PlainCredentials(
    RABBITMQ_USER, RABBITMQ_PASSWORD)))
    channel = connection.channel()
    channel.queue_declare(queue=‘myqueue’)
    channel.basic_publish(exchange=‘’, routing_key=‘myqueue’, body=message)
    connection.close()
    publish_message(‘156465123152v’)

    消费者:
    import pika

RABBITMQ_HOST = ‘172.18.191.193’
RABBITMQ_PORT = 8989
RABBITMQ_USER = ‘root’
RABBITMQ_PASSWORD = ‘root’
RABBITMQ_VHOST = ‘/’
def callback(ch, method, properties, body):
# process the message
print(body)

def create_rabbitmq_consumer():
connection = pika.BlockingConnection(pika.ConnectionParameters(
host=RABBITMQ_HOST,
port=RABBITMQ_PORT,
virtual_host=RABBITMQ_VHOST,
credentials=pika.PlainCredentials(
RABBITMQ_USER, RABBITMQ_PASSWORD)))
channel = connection.channel()
channel.queue_declare(queue=‘myqueue’)
channel.basic_consume(queue=‘myqueue’, on_message_callback=callback, auto_ack=True)
channel.start_consuming()
create_rabbitmq_consumer()
5.也可以用nginx转发
注意 要在nginx.conf文件下新建一个跟http同级的stream 因为这个是tcp连接 写道http里会报错
stream {
upstream rabbitmq{
server 172.18.191.193:8989;
}
server {
listen 8989;
proxy_connect_timeout 600s; # 设置太小容易接收不到信号直接死掉 而本身rabbitmq是有心跳的 所以设置大点能包含住心跳信号就ok
#proxy_timeout 3s;
proxy_pass rabbitmq;

}
}

更多推荐