Biz-SIP业务中台案例实战(3)——个性化的Source接入模块

2023-12-07 11:18

本文主要是介绍Biz-SIP业务中台案例实战(3)——个性化的Source接入模块,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Biz-SIP金融级业务中台(http://bizsip.bizmda.com))是一套基于领域驱动设计(DDD),用于快速构建金融级云原生架构的服务整合中间件,包含了在金融场景里锤炼出来的最佳实践。

Biz-SIP业务中台在交易处理时,会先后涉及Source层、App层和Sink层的处理,其中,Source层的Source模块,对应于DDD架构中的适配层,主要是对接外部和系统内部其它系统的服务接入,主要功能有:
● 通讯协议的对接:服务接入模块(Source)负责外部调用方服务的通讯接入;
● 消息转换:把外部多种消息格式,转换成平台内部通用的JSON标准消息报文类型;
● 调用应用层的App服务进行服务编排。

对于外部服务接入,可以采用前面二节所提到的开放OpenAPI接口来接入,而本节介绍的,是个性化Source模块来对接外部个性化接口的接入:
在这里插入图片描述

具体代码和配置可以查看Biz-SIP源代码中的Sample相关测试案例(https://gitee.com/szhengye/biz-sip)

一、App服务和Sink服务的开发和配置

在上节的App服务调用Sink服务中,已经实现了Sink服务和App服务,不过是通过平台统一的开放OpenAPI接口来调用的:

$ curl -H "Content-Type:application/json" -H "Biz-Service-Id:/bean/sample2" -X POST --data '{"accountNo":"003"}' http://localhost:8888/api|jq{"code": 0,"message": "success","extMessage": null,"appServiceId": "/bean/sample2","traceId": "3cf20f08fe7f4d0d8c320ea14b61c98esh","parentTraceId": null,"timestamp": 1646564189216,"data": {"message": "hello!","accountNo": "003"}
}

二、个性化Source模块的开发

这里我们不用上面提到的OpenAPI接口来调用,而是另外写一个个性化的接口调用方式,为了简单起见,还是采用RESTful的接口。首先,我们需要编写一个RestController类来实现个性化接口:

@RestController
public class SampleSource1Controller {private BizMessageInterface appServiceClient = SourceClientFactory.getAppServiceClient(BizMessageInterface.class,"/bean/sample2");@PostMapping(value = "/source1", consumes = "application/json", produces = "application/json")public Object doService(@RequestBody String inMessage, HttpServletResponse response) throws BizException {JSONObject jsonObject = JSONUtil.parseObj(inMessage);return this.appServiceClient.call(jsonObject);}
}

在SampleSource1Controller类中,通过appServiceClient句柄,调用了"/bean/sample2"这个App服务。

三、启动应用进行测试

启动SampleSourceApplication应用,以及SampleSinkApplication和SampleAppApplication应用,通过向“/source1”发起请求,就可以接收到响应,返回的报文内容增加了message域:

$ curl -H "Content-Type:application/json" -X POST --data '{"accountNo":"003"}' http://localhost:8080/source1|jq{"code": 0,"message": "success","extMessage": null,"appServiceId": "/bean/sample2","traceId": "c4d06665d3114668bddaca096ca6ebf9","parentTraceId": null,"timestamp": 1646564895713,"data": {"message": "hello!","accountNo": "003"}
}

Biz-SIP官方网站:http://bizsip.bizmda.com
Gitee:https://gitee.com/szhengye/biz-sip

这篇关于Biz-SIP业务中台案例实战(3)——个性化的Source接入模块的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/465648

相关文章

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一