位置: IT常识 - 正文

spring integration使用:消息转换器

编辑:rootadmin
spring integration使用:消息转换器 系列文章目录

推荐整理分享spring integration使用:消息转换器,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

…TODO spring integration开篇:说明 …TODO spring integration使用:消息路由 spring integration使用:消息转换器

spring integration使用:消息转换器系列文章目录前言消息转换器(或者叫翻译器)的概念二、translator在spring integration中的实现分为4个组件transformercontent enricherclaim checkcodec目标1.引入库2.码代码2.1.消息源2.2.定义渠道2.3.定义集成流2.4.定义用于处理分流过来消息(前缀为a的消息)集成流总结前言

本系列文章主要是通过一些实际项目场景举例,展开讲解spring integration对enterprise integration patterns的实现。个人能力所限,文中有不妥当或者错误的点还希望大家担待和指正。

文章的示例使用的都是java DSL风格代码,很多上下文都是通过使用Spring Expression Language (SpEL)来做的动作和内容,所以需要你对SpEL有一些了解,这个过程应该不会太长。

关于文章中使用的一些环境依赖和代码风格、约定,请看系列文章的开篇说明。

消息转换器(或者叫翻译器)的概念

在许多情况下,企业集成解决方案在现有应用程序(如遗留系统、打包应用程序、自行开发的自定义应用程序或由外部合作伙伴运营的应用程序)之间路由消息。这些应用程序中的每一个通常都是围绕专有数据模型构建的。每个应用程序对客户实体的概念可能略有不同,定义客户的属性以及客户与哪些其他实体相关。例如,会计系统可能对客户的纳税人 ID 号更感兴趣,而客户关系管理 (CRM) 系统存储电话号码和地址。应用程序的基础数据模型通常驱动物理数据库模式、接口文件格式或编程接口 (API) 的设计,这些实体是集成解决方案必须与之交互的。因此,应用程序期望接收模仿应用程序内部数据格式的消息。

除了各种应用程序中包含的专有数据模型和数据格式之外,集成解决方案通常还与寻求独立于特定应用程序的标准化数据格式进行交互。有许多联盟和标准机构定义了这些协议,例如RosettaNet,ebXML,OAGIS和许多其他行业特定的联盟。在许多情况下,集成解决方案需要能够使用“官方”数据格式与外部各方进行通信,而内部系统则基于专有格式。

使用不同数据格式的系统如何使用消息传递相互通信?

spring integration使用:消息转换器

在其他过滤器或应用程序之间使用特殊筛选器(消息转换器)将一种数据格式转换为另一种数据格式。

消息转换器是 [GoF] 中描述的适配器模式的消息传递等效项。适配器将组件的接口转换为另一个接口,以便可以在不同的上下文中使用。

在EIP中叫translator。

二、translator在spring integration中的实现分为4个组件

transformer:将源消息转换(翻译)为你指定的任意格式或者类型(比如XML转换为JSON)。 content enricher:动态扩充源消息的header或者payload内容,加字段之类的操作。 claim check:是一种消息传递机制,它可以解决消息体过大的问题,提高系统的可靠性和稳定性。 codec:编解码器对对象进行编码和解码。

transformercontent enricherheader enricherpayload enricherclaim check

Claim Check是一种消息传递机制,它可以解决消息体过大的问题,提高系统的可靠性和稳定性。

当消息体过大时,传输和处理这些消息会导致系统的性能下降。为了解决这个问题,Claim Check机制可以将消息体抽离出来,只传递消息的引用,而不是整个消息体。这样可以减少消息传输的数据量,提高传输效率。

在Claim Check机制中,消息的发送方将消息体存储到一个中央存储区域,然后只传递消息体的引用给接收方。当接收方需要处理消息时,它可以使用引用来检索消息体,然后对消息进行处理。

Claim Check机制的优点是可以降低系统的开销,同时可以提高系统的可靠性和稳定性。通过使用Claim Check机制,可以避免因为消息体过大导致的系统错误和性能下降的问题,从而提高系统的可维护性和可扩展性。

codec目标

通过对消息内容做判断将消息分流到不同的渠道中进行后续处理。

1.引入库

gradle

implementation 'org.springframework.boot:spring-boot-starter-integration' implementation 'org.springframework.integration:spring-integration-http' implementation 'org.springframework.integration:spring-integration-file'2.码代码2.1.消息源 public String getFeed() { RestTemplate restTemplate = new RestTemplate(); String forObject = restTemplate.getForObject("https://spring.io/blog.atom", String.class);// String forObject = restTemplate.getForObject("https://tuna.moe/feed.xml", String.class);// System.out.println(forObject); return forObject; }2.2.定义渠道 @Bean public MessageChannel prefixa(){ return new DirectChannel(); }2.3.定义集成流 @Bean public IntegrationFlow httpOutboundFlow() { return IntegrationFlows.fromSupplier(this::getFeed, c -> c.poller(Pollers.fixedRate(10000))) .channel(MessageChannels.direct()) .transform(Transformers.objectToString("UTF-8")) .split(s -> s.applySequence(false).delimiters(" ")) .<String>filter((p) -> p.length() < 10 && p.matches("\\b[\\w]{3,}\\b")) .channel(MessageChannels.direct()) .routeToRecipients(r->r .applySequence(true) .ignoreSendFailures(true) .defaultOutputChannel("nullChannel") .recipient("prefixa", "payload.startsWith('a')") ) .get(); }2.4.定义用于处理分流过来消息(前缀为a的消息)集成流 @Bean public IntegrationFlow printAFlow(){ return IntegrationFlows.from("prefixa") .handle(p->{ System.out.println("^^^^^^^^^^^^^^^" + p.getPayload()); }) .get(); }总结

…TODO。

本文链接地址:https://www.jiuchutong.com/zhishi/299695.html 转载请保留说明!

上一篇:提示工程师:如何高效的向ChatGPT提问对话(工程师模式有什么用)

下一篇:理解vuex实现的原理(vuex用法和原理)

  • 如何利用微博来做推广(微博如何使用方法)

    如何利用微博来做推广(微博如何使用方法)

  • 钉钉在线编辑会覆盖别人的吗(钉钉在线编辑会有记录吗)

    钉钉在线编辑会覆盖别人的吗(钉钉在线编辑会有记录吗)

  • word如何添加自制封面(word如何添加自定义页码)

    word如何添加自制封面(word如何添加自定义页码)

  • 腾讯视频悠享版是什么(腾讯视频优享版)

    腾讯视频悠享版是什么(腾讯视频优享版)

  • 华为手机指纹锁怎么设置(华为手机指纹锁没有了)

    华为手机指纹锁怎么设置(华为手机指纹锁没有了)

  • 小米cc9怎么唤醒小爱同学(小米cc9设置)

    小米cc9怎么唤醒小爱同学(小米cc9设置)

  • 腾讯视频可以创建房间吗(腾讯视频可以创建房间两个人一起看)

    腾讯视频可以创建房间吗(腾讯视频可以创建房间两个人一起看)

  • 拼多多会员免单规则(拼多多会员免单券是平台承担还是商家)

    拼多多会员免单规则(拼多多会员免单券是平台承担还是商家)

  • 手机wps散点图怎么显示公式(手机wps散点图怎么自定义横纵坐标?)

    手机wps散点图怎么显示公式(手机wps散点图怎么自定义横纵坐标?)

  • 怎么用副卡发短信(怎么用副卡发短信给别人)

    怎么用副卡发短信(怎么用副卡发短信给别人)

  • 新手机开机电量多少算正常吗(新手机开机电量40算正常吗)

    新手机开机电量多少算正常吗(新手机开机电量40算正常吗)

  • 手机怎么隐藏qq资料(oppo手机怎么隐藏qq)

    手机怎么隐藏qq资料(oppo手机怎么隐藏qq)

  • 华为nova5pro怎么插耳机(华为nova5pro怎么样)

    华为nova5pro怎么插耳机(华为nova5pro怎么样)

  • iphone8无法开机(iphone8无法开机充电没反应)

    iphone8无法开机(iphone8无法开机充电没反应)

  • 金蝶软件使用方法(金蝶软件使用方法及步骤)

    金蝶软件使用方法(金蝶软件使用方法及步骤)

  • 淘宝漏发不承认怎么办(淘宝漏发不处理怎么办)

    淘宝漏发不承认怎么办(淘宝漏发不处理怎么办)

  • 如何把一个表格的内容复制到另一个表格(如何把一个表格中的数据匹配到另一个表格)

    如何把一个表格的内容复制到另一个表格(如何把一个表格中的数据匹配到另一个表格)

  • 蚂蚁森林790g能量怎么产生(蚂蚁森林 180g)

    蚂蚁森林790g能量怎么产生(蚂蚁森林 180g)

  • 笔记本电脑复位键在哪(笔记本电脑复位键)

    笔记本电脑复位键在哪(笔记本电脑复位键)

  • 华为p20pro锁屏时间怎么设置(华为p20pro锁屏时间怎么设置到上面)

    华为p20pro锁屏时间怎么设置(华为p20pro锁屏时间怎么设置到上面)

  • 用jsp实现简单登入注册界面功能(css美化)(软件idea)(jsp做登录界面)

    用jsp实现简单登入注册界面功能(css美化)(软件idea)(jsp做登录界面)

  • 简单更改DEDECMS模板背景色的方法(dedecms更新)

    简单更改DEDECMS模板背景色的方法(dedecms更新)

  • 递延所得税资产会计处理全过程
  • 一般纳税人应纳税额减征额怎么算
  • 什么是抄税清卡业务
  • 税务局做社保关联带什么资料
  • 8月现金收入9月存银行如何做账
  • 企业税分几种类型
  • 金税盘问题
  • 分公司可以享受小规模纳税人优惠
  • 纳税表不得抵扣什么意思
  • 国际货运代理0税率和免税
  • 进销的单位不一样怎么办
  • 企业注销当月无法申报个税
  • 接受捐赠计入什么费用
  • 职工暖气费报销算福利
  • 销售货款会计分录怎么做
  • 出售设备账务处理
  • 进出口企业如何防范汇率风险
  • 股权转让资本公积怎么处理
  • 普通发票商品名称错了一个字
  • 财税201617号文
  • 增值税缴纳计入成本吗
  • 公司与股东的往来款涉税
  • 服装外贸进出口
  • 增值税差额征收企业所得税主营业务收入应按什么计入
  • 银行代发工资一定要本行卡吗
  • 出口货物过了退税怎么办
  • 电子发票字体不同
  • 借主营业务成本贷库存商品
  • 出口退税款的账户是什么
  • 合同取得成本计入当期损益吗
  • 现金支付奖金
  • 飞机票本身包含保险吗多少钱
  • 企业分配利润的原则
  • 固定资产出售收入属于什么收入
  • 票已收到款未付怎么办
  • 限定性净资产要算在现金流量表里吗
  • windows11右键菜单设置
  • 融资中的未确认利息
  • 路由器和交换机用什么线连接
  • 收外汇的账务处理实例
  • 增值税税率类型
  • php提高性能
  • php配置文件的名字是
  • 广告公司的设计服务费计入什么科目
  • vue onblur
  • axios提交文件
  • 明细分类账余额借贷怎么填
  • 一般纳税人销售自己使用过的汽车
  • web前端修炼之道
  • python绘制散点图的函数
  • 包工的人工费可以算工程款
  • 逾期超过一年
  • 累计折旧当月增加当月减少
  • 百度地图api3.0
  • 商品流通企业的基本要素
  • 公司签发银行承兑汇票的行为属于什么
  • 税费退库怎么做账
  • 增值税年末所有都要结平吗
  • 债务豁免的账务处理
  • 企业筹建期间可以上市吗
  • 公墓造价成本
  • 纸质承兑汇票怎么兑现步骤
  • 改良设备的入账价值
  • 修筑公路的流程视频
  • 如何设置个性化桌面
  • 苹果知识大全
  • windows7如何设置时间格式
  • 驱动人生公司怎么样
  • win8怎样设置禁止弹出广告
  • 计算机图形学考研院校
  • cocos 2d x
  • js开发android应用
  • js移动端拖拽
  • vue导航组件
  • javascript编程基础
  • js自定义鼠标右键菜单
  • js实现组件功能
  • 辽宁网上怎么申请港澳签证流程
  • 税率的计算器在线计算
  • 电子秒表怎么读数9:33.12
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设