Zato使用记录

zato使用记录

1. docker安装

docker pull registry.gitlab.com/zatosource/docker-registry/quickstart:3.2

官网:https://zato.io/

image-20210428165228462

docker run --pull=always -it --rm -p 22022:22 -p 8183:8183 -p 11223:11223 --name zato  registry.gitlab.com/zatosource/docker-registry/quickstart:3.2

2. 登录zato

2.1 启动容器后,进入容器取密码

image-20210428171209181

登录地址:http://localhost:8183/

image-20210428171401326

2.2 安装rabbitmq

image-20210428173918228

docker pull rabbitmq:management
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management

登录地址:http://127.0.0.1:15672/ guest guest

image-20210428174132670

设置权限:

image-20210429093712523

2.3 zato创建connection连接rabbitmq

image-20210429094255981

按上一步rabbitmq的配置设置connection:

image-20210429094004532

修改密码:guest

image-20210429094043328

创建一个outgoing测试rabbitmq是否连接成功

image-20210429094426401

image-20210429094453717

image-20210429094516885

image-20210429094547847

image-20210429094628534

证明连接成功

2.4 实例

外部发起一个http请求,zato处理请求(channel)并转发到rabbitmq(outgoing),zato接收rabbitmq的数据(channel)并转发到第三方系统(outgoing)

2.4.1 上传py文件变成服务

lezyo.py


from zato.server.service import Service
import json

class OeNotice(Service):
    def handle(self):
        self.logger.info('Request: {}'.format(self.request.payload))
        self.logger.info('Request type: {}'.format(type(self.request.payload)))
        msg=json.dumps(self.request.payload)
        conn_name='MyAMQPConnection-outgoing'
        exchange_name=''
        routing_key='hello'
        #properties={'app_id':''}
        self.outgoing.amqp.send(msg,conn_name,exchange_name,routing_key)
        self.logger.info('Routgoing.amqp.send---------------')
        self.response.payload={'result':'ok'}

mqchannel.py


from zato.server.service import Service
import json

class MessageQueueTOMgt(Service):
    def handle(self):
        self.logger.info('enter MessageQueueTOMgt')
        self.logger.info('Request: {}'.format(self.request.payload))
        self.logger.info('Request type: {}'.format(type(self.request.payload)))
        test=self.outgoing.rest.get('HotelNotify')
        response=test.conn.send(self.cid,json.dumps(self.request.payload))
        self.logger.info('Response: {}'.format(response.text))
        self.logger.info('Response type: {}'.format(type(response.text)))

将这两个py文件上传到zato变成服务:

image-20210429101859201

image-20210429102029431

2.4.2 添加channel-rest

image-20210429100852096

image-20210429102253955

image-20210429102334813

2.4.3 添加outgoing-amqp

image-20210429120404930

2.4.4 添加outgoing-rest

image-20210429102757162

2.4.5 添加channel-amqp

image-20210429120530811

2.4.6 测试

用flask写了一个接口后台:

import flask, json
from flask import request
from flask import Response
import os
import sys
import uuid
from urllib import parse
import hashlib
import time

 
'''
flask: web框架,通过flask提供的装饰器@server.route()将普通函数转换为服务
'''
# 创建一个服务,把当前这个python文件当做一个服务
count={} #定义全局变量
server = flask.Flask(__name__)
# server.config['JSON_AS_ASCII'] = False
# @server.route()可以将普通函数转变为服务 登录接口的路径、请求方式

##zato接口
@server.route('/testZato', methods=['POST'])
def testZato():
    #json 
    print('enter testzato')
    #print(request.values)
    data=request.get_data()
    print(json.loads(data.decode("utf-8")))
    res={"respCode":"200","respMsg":"testzato-----"}
    return json.dumps(res, ensure_ascii=False)
   
if __name__ == '__main__':
    server.run(debug=False, port=9200, host='10.105.7.114')# 指定端口、host,0.0.0.0代表不管几个网卡,任何ip都可以访问

先运行起来:

image-20210429103351943

postman发送请求:

image-20210429133805585

image-20210429133919046

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值