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

相关文章

Python实现Word转PDF全攻略(从入门到实战)

《Python实现Word转PDF全攻略(从入门到实战)》在数字化办公场景中,Word文档的跨平台兼容性始终是个难题,而PDF格式凭借所见即所得的特性,已成为文档分发和归档的标准格式,下面小编就来和大... 目录一、为什么需要python处理Word转PDF?二、主流转换方案对比三、五套实战方案详解方案1:

idea Maven Springboot多模块项目打包时90%的问题及解决方案

《ideaMavenSpringboot多模块项目打包时90%的问题及解决方案》:本文主要介绍ideaMavenSpringboot多模块项目打包时90%的问题及解决方案,具有很好的参考价值,... 目录1. 前言2. 问题3. 解决办法4. jar 包冲突总结1. 前言之所以写这篇文章是因为在使用Mav

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

Nginx进行平滑升级的实战指南(不中断服务版本更新)

《Nginx进行平滑升级的实战指南(不中断服务版本更新)》Nginx的平滑升级(也称为热升级)是一种在不停止服务的情况下更新Nginx版本或添加模块的方法,这种升级方式确保了服务的高可用性,避免了因升... 目录一.下载并编译新版Nginx1.下载解压2.编译二.替换可执行文件,并平滑升级1.替换可执行文件

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

RabbitMQ消费端单线程与多线程案例讲解

《RabbitMQ消费端单线程与多线程案例讲解》文章解析RabbitMQ消费端单线程与多线程处理机制,说明concurrency控制消费者数量,max-concurrency控制最大线程数,prefe... 目录 一、基础概念详细解释:举个例子:✅ 单消费者 + 单线程消费❌ 单消费者 + 多线程消费❌ 多