oslo"/>
oslo
目录
介绍说明
系统环境
rabbitmq-server安装及配置
oslo.messaging安装
oslo.config安装
olso_messaging测试验证
总结
介绍说明
openstack中的消息队列使用rabbitmq-server,几乎所有组件都依赖消息队列,而在代码表现端,openstack各个服务会使用开源的oslo_messaging库,该模块封装了几乎所有对消息队列的操作,rabbitmq和olso_messaging二者中涉及到的原理、概念和关系我在这里不做介绍,网上有很多文章大家可以来学习,这里只给大家介绍一下rabbitmq和oslo_messaging的安装、使用和测试。
系统环境
我使用的是Centos7,提前安装好pip,安装oslo库时需要用到,方法自行百度
rabbitmq-server安装及配置
1、安装
yum install rabbitmq-server
2、查看服务状态
查看服务是否启动,确保安装后服务启动正常
[root@mm2v ~]# systemctl status rabbitmq-server
● rabbitmq-server.service - RabbitMQ brokerLoaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled)Active: active (running) since Mon 2020-07-13 12:10:24 CST; 1 weeks 3 days agoMain PID: 21910 (beam.smp)Status: "Initialized"Tasks: 279CGroup: /system.slice/rabbitmq-server.service├─21910 /usr/lib64/erlang/erts-8.3.5.3/bin/beam.smp -W w -A 256 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -K true -- -root /usr/lib64/erlang ...├─22318 erl_child_setup 1024├─22342 inet_gethost 4└─22343 inet_gethost 4
[root@mm2v ~]#
3、用户配置
① 创建用户
rabbitmqctl add_user liyang liyang
② 赋予administrator角色:
rabbitmqctl set_user_tags liyang administrator
③ 增加用户权限
rabbitmqctl set_permissions -p / liyang '.*' '.*' '.*'
④ 查看用户及其权限
rabbitmqctl list_users
[root@lyv ~]# rabbitmqctl list_users
Listing users ...
guest [administrator]
liyang [administrator]
...done.
[root@lyv ~]#
[root@lyv ~]#
[root@lyv ~]# rabbitmqctl list_user_permissions liyang
Listing permissions for user "liyang" ...
/ .* .* .*
...done.
[root@lyv ~]#
oslo.messaging安装
pip install --ignore-installed oslo.messaging
oslo.config安装
pip install --ignore-installed oslo.config
olso_messaging测试验证
1、服务端代码
#!/usr/bin/python
from oslo_config import cfg
import oslo_messaging
import sys
import timeclass TestEndpoint(object):def test(self, ctx, a,b):print "receive client access"return a+btransport_url = 'rabbit://liyang:liyang@10.249.104.99:5672/'
server = sys.argv[1]
transport = oslo_messaging.get_transport(cfg.CONF,transport_url)
target = oslo_messaging.Target(topic='test', server=server)
endpoints = [TestEndpoint(),
]
server = oslo_messaging.get_rpc_server(transport, target, endpoints)
try:server.start()while True:time.sleep(1)
except KeyboardInterrupt:print("Stopping server")server.stop()
server.wait()
2、客户端代码
#!/usr/bin/pythonfrom oslo_config import cfg
import oslo_messagingtransport_url = 'rabbit://liyang:liyang@10.249.104.99:5672/'
transport = oslo_messaging.get_transport(cfg.CONF,transport_url)
target = oslo_messaging.Target(topic='test')
client = oslo_messaging.RPCClient(transport, target)
r = client.call({}, 'test',a=2,b=3)
print r
print 'success
3、测试结果
① 启动服务端
程序后的参数"my-server"是server名,可自定义,供程序中使用。
[root@lyv ~]# python server.py my-server
/usr/lib/python2.7/site-packages/oslo_messaging/server.py:340: FutureWarning: blocking executor is deprecated. Executor default will be removed. Use explicitly threading or eventlet instead in version 'pike' and will be removed in version 'rocky'category=FutureWarning)
② 启动客户端
可以看到client端调用了server端的方法函数,程序里是"test"方法,该函数在server端会将两个整型入参做加法运算并返回
[root@lyv ~]# ./client.py
5
success
③ 服务端输出
[root@lyv ~]# python server.py my-server
/usr/lib/python2.7/site-packages/oslo_messaging/server.py:340: FutureWarning: blocking executor is deprecated. Executor default will be removed. Use explicitly threading or eventlet instead in version 'pike' and will be removed in version 'rocky'category=FutureWarning)receive client access #server端收到client端的调用,程序代码输出
总结
本文的目的是为了帮助想要了解oslo_messaging的同学,可以快速搭建出一套可用的环境,包括rabbitmq-server、oslo_messaging、olso_config的安装、配置及使用方法,当然这里仅是使用了oslo_messaging消息收发其中一种模式而已,更多的消息收发使用方法以及关于oslo库的介绍,大家可以自己去学习。
更多推荐
oslo
发布评论