目录
介绍说明
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 broker
Loaded: 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 ago
Main PID: 21910 (beam.smp)
Status: "Initialized"
Tasks: 279
CGroup: /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 time
class TestEndpoint(object):
def test(self, ctx, a,b):
print "receive client access"
return a+b
transport_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/python
from oslo_config import cfg
import oslo_messaging
transport_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_messaging使用及测试分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/24870.html