RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
RabbitMQ是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。
rabbit主要特性
- 可伸缩性:集群服务
- 消息持久化:从内存持久化消息到硬盘,再从硬盘加载到内存
一、安装启动
安装rabbit源仓库
yum install loongnix-release-rabbitmq-38
安装相关依赖
yum install socat logrotate erlang
安装rabbitmq软件包
yum install rabbitmq-server
启动rabbitmq服务
systemctl start rabbitmq-server
systemctl status rabbitmq-server
开启管理页面插件
rabbitmq-plugins enable rabbitmq_management
[root@bogon opt]$ rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@bogon:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@bogon...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
started 3 plugins.
二、测试
- 用python脚本产生消息
安装pika模块:pip3 install pika
[root@bogon ~]# pip3 install pika
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Collecting pika
Downloading https://pypi.loongnix.cn/root/pypi/+f/89f/5e606646caebe/pika-1.3.1-py3-none-any.whl (155kB)
100% |████████████████████████████████| 163kB 887kB/s
Installing collected packages: pika
Successfully installed pika-1.3.1
编写产生消息脚本send.py
cat << EOF > send.py
#!/usr/bin/env python
import pika
connection = pika.BlockingConnection(
pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='', routing_key='hello', body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close()
EOF
执行脚本产生消息
[root@bogon ~]# python3 send.py
[x] Sent ‘Hello World!’
- 用python脚本接收消息
编写接收消息的脚本 receive.py
cat << EOF > receive.py
#!/usr/bin/env python
import pika, sys, os
def main():
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
def callback(ch, method, properties, body):
print(" [x] Received %r" % body)
channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
print('Interrupted')
try:
sys.exit(0)
except SystemExit:
os._exit(0)
EOF
执行脚本接收信息
[root@bogon lqw]# python3 receive.py
[*] Waiting for messages. To exit press CTRL+C
[x] Received b’Hello World!’
[x] Received b’Hello World!’
访问控制台查看,帐号密码全输入guest即可登录
登录后界面