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的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

六个案例搞懂mysql间隙锁

《六个案例搞懂mysql间隙锁》MySQL中的间隙是指索引中两个索引键之间的空间,间隙锁用于防止范围查询期间的幻读,本文主要介绍了六个案例搞懂mysql间隙锁,具有一定的参考价值,感兴趣的可以了解一下... 目录概念解释间隙锁详解间隙锁触发条件间隙锁加锁规则案例演示案例一:唯一索引等值锁定存在的数据案例二:

MySQL 表的内外连接案例详解

《MySQL表的内外连接案例详解》本文给大家介绍MySQL表的内外连接,结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录表的内外连接(重点)内连接外连接表的内外连接(重点)内连接内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我

Java Spring 中的监听器Listener详解与实战教程

《JavaSpring中的监听器Listener详解与实战教程》Spring提供了多种监听器机制,可以用于监听应用生命周期、会话生命周期和请求处理过程中的事件,:本文主要介绍JavaSprin... 目录一、监听器的作用1.1 应用生命周期管理1.2 会话管理1.3 请求处理监控二、创建监听器2.1 Ser

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

MQTT SpringBoot整合实战教程

《MQTTSpringBoot整合实战教程》:本文主要介绍MQTTSpringBoot整合实战教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录MQTT-SpringBoot创建简单 SpringBoot 项目导入必须依赖增加MQTT相关配置编写

Java Stream.reduce()方法操作实际案例讲解

《JavaStream.reduce()方法操作实际案例讲解》reduce是JavaStreamAPI中的一个核心操作,用于将流中的元素组合起来产生单个结果,:本文主要介绍JavaStream.... 目录一、reduce的基本概念1. 什么是reduce操作2. reduce方法的三种形式二、reduce

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

Redis迷你版微信抢红包实战

《Redis迷你版微信抢红包实战》本文主要介绍了Redis迷你版微信抢红包实战... 目录1 思路分析1.1hCckRX 流程1.2 注意点①拆红包:二倍均值算法②发红包:list③抢红包&记录:hset2 代码实现2.1 拆红包splitRedPacket2.2 发红包sendRedPacket2.3 抢