Linux使用rabbitmq
- 安装pika库
这是一个用于与RabbitMQ通信的Python客户端库。用以下命令安装: pip install pika - 安装服务端
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
-
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;
}
}
更多推荐



所有评论(0)