Nameko
- Nameko 是一款小巧、简洁的、异步通信方式的微服务架构
- 采用 RabbitMQ 消息队列作为消息中间件,基于发布者、订阅者模式
- 消费者与生产者基于 RPC 进行通讯
定义服务
# producer_service.py
from nameko.rpc import rpc
class GenerateService(object):
# 定义微服务名称
name = "generate_service"
@rpc
def hello_world(self, msg):
print('hello,i am been called by customer(消费者),返回消息:{}'.format(msg))
# 返回结果
return "Hello World!I Am a msg from producer!" # 返回结果 return "Hello World!I Am a msg from producer!"
注册服务到mq
# 注册服务
# producer_service:目标文件
# admin:admin:MQ用户名及密码
# ip地址:5672:MQ服务器ip地址及应用端口号
# my_vhost:虚拟机名
nameko run producer_service --broker amqp://admin:admin@ip地址:5672/my_vhost
flash 定义api 接口
from flask import Flask
from nameko.standalone.rpc import ClusterRpcProxy
app = Flask(__name__)
# MQ配置
config_mq = {'AMQP_URI': "amqp://admin:admin@ip地址:5672/my_vhost"}
@app.route('/hello_world', methods=['GET'])
def call_service():
with ClusterRpcProxy(config_mq) as rpc:
# 消费者调用微服务(生产者),获取服务(生产者)的返回值
result = rpc.generate_service.hello_world(msg="xag msg")
# 返回结果
return result, 200
app.run(debug=True)
客户端访问
调用API接口
http://127.0.0.1:5000/hello_world
Method:GET