位置: 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用法和原理)

  • 163免费邮箱注册版(163免费邮箱注册)(163免费邮箱)

    163免费邮箱注册版(163免费邮箱注册)(163免费邮箱)

  • 苹果12屏幕镜像怎么用(苹果12屏幕镜像打不开)

    苹果12屏幕镜像怎么用(苹果12屏幕镜像打不开)

  • 腾讯加速器vip和svip的区别(腾讯加速器会员价格)

    腾讯加速器vip和svip的区别(腾讯加速器会员价格)

  • 网易云音乐账号在哪可以绑定(网易云音乐账号可以几个人用)

    网易云音乐账号在哪可以绑定(网易云音乐账号可以几个人用)

  • 苹果手机能放两张卡吗(苹果手机能放两个微信吗)

    苹果手机能放两张卡吗(苹果手机能放两个微信吗)

  • viewg显示器是什么牌子(显示器viewsonic是什么牌子?)

    viewg显示器是什么牌子(显示器viewsonic是什么牌子?)

  • 设置预留信息什么意思(预留信息应该填什么内容)

    设置预留信息什么意思(预留信息应该填什么内容)

  • 小米10新机有贴膜吗(小米10是不是贴有膜了)

    小米10新机有贴膜吗(小米10是不是贴有膜了)

  • 抖音申请电脑直播需要多久(抖音申请电脑直播权限需要审核多久)

    抖音申请电脑直播需要多久(抖音申请电脑直播权限需要审核多久)

  • 微信怎样关掉支付密码(微信怎么关掉支付)

    微信怎样关掉支付密码(微信怎么关掉支付)

  • 抖音支付账户怎么注销(抖音支付账户怎么更换手机号)

    抖音支付账户怎么注销(抖音支付账户怎么更换手机号)

  • 骁龙712aie和712有什么区别(骁龙712相当于联发科)

    骁龙712aie和712有什么区别(骁龙712相当于联发科)

  • surface充不进去电(surface充不进去电什么原因)

    surface充不进去电(surface充不进去电什么原因)

  • 苹果iwatch4和5的区别(iwatch4和5哪个好)

    苹果iwatch4和5的区别(iwatch4和5哪个好)

  • 数据库系统和文件系统区别(数据库系统和文件系统的根本区别在于整体数据的结构化)

    数据库系统和文件系统区别(数据库系统和文件系统的根本区别在于整体数据的结构化)

  • 手机al键是什么意思(al键是干什么用的)

    手机al键是什么意思(al键是干什么用的)

  • 小米8如何禁止来源未知(小米8如何禁止下载)

    小米8如何禁止来源未知(小米8如何禁止下载)

  • 滴滴静默封号能解除吗(滴滴车主账号被静默了怎么办?)

    滴滴静默封号能解除吗(滴滴车主账号被静默了怎么办?)

  • exb文件手机怎么打开(exb格式手机用什么软件打开)

    exb文件手机怎么打开(exb格式手机用什么软件打开)

  • 2600x超频能超到多少(2600x超频设置教程)

    2600x超频能超到多少(2600x超频设置教程)

  • 电脑上qq下载的文件在哪(电脑上qq下载的文件怎么删除)

    电脑上qq下载的文件在哪(电脑上qq下载的文件怎么删除)

  • 红米手机屏幕分辨率怎么调(红米手机屏幕分辨率在哪)

    红米手机屏幕分辨率怎么调(红米手机屏幕分辨率在哪)

  • qq如何绑定手机号(qq如何绑定手机号和邮箱)

    qq如何绑定手机号(qq如何绑定手机号和邮箱)

  • 绿萝的养殖方法和注意事项——办公室养殖版(图文)(大型绿萝的养殖方法)

    绿萝的养殖方法和注意事项——办公室养殖版(图文)(大型绿萝的养殖方法)

  • vue实现思维导图(vue思维导图怎么下载)

    vue实现思维导图(vue思维导图怎么下载)

  • 通过点击一个按钮控制elementui选择框的展开和关闭(通过点击一个按键的游戏)

    通过点击一个按钮控制elementui选择框的展开和关闭(通过点击一个按键的游戏)

  • 进出口环节增值税计税基础
  • 啥叫反倾销税
  • 款已付未收到发票怎么开
  • 出让土地缴纳的契税怎么账务处理
  • 退税发票误勾选怎么撤销
  • 企业合并固定资产增值的规定
  • 税收滞纳金可以免除吗
  • 计提成本会计分录
  • 专票红冲后还需重新开票吗
  • 法院拍卖土地欠土地使用税
  • 应交城市维护建设税分录怎么做
  • 递延所得税资产是什么
  • 简易计征的税率
  • 营改增后劳务公司账务处理
  • 期末留抵税额转出怎么报税
  • 在建工程领用外购材料会计分录
  • 重点税源表怎么自动取数
  • 药品增值税简易征收
  • 直接转让土地使用权 土地增值税申报表
  • 向其他股东购买股权
  • 信托保证本金吗
  • 维修机器设备买什么好
  • 如何关闭开始菜单快捷键
  • TypeError: Cannot read properties of undefined (reading ‘NAME‘)报错解决
  • php扩展ffmpeg教程
  • 经营租出的设备要计提折旧吗
  • vue获取当前路由地址
  • 缴纳水利建设基金计入什么科目
  • 个人所得税零报税怎么报
  • node更新到最新版本
  • 【超用心整理】Markdown常用语法介绍,看这一个就够了
  • php二分查找算法两种方法
  • 股东出资方式包括
  • 库存现金科目的辅助核算项目为日记账
  • 资产总额不超过5000万是指全年平均收入吗
  • 织梦怎么建站
  • mysql转数字为字符串
  • 绩效奖个人所得税是多少
  • 费用票有什么用处
  • 礼物提前到会不会不好
  • 网约车提现多久到账
  • Windows Server 2003下修改MySQL 5.5数据库data目录
  • 收到营业外收入政府补贴的会计分录
  • 个人独资企业需要会计做账吗
  • 会计中级工作年限截止日期
  • 购买其他权益工具投资公允大于我支付的价值
  • 行政事业单位银行开户规定
  • 资金退回怎么记账
  • 工会账户收到经费的会计科目
  • 法人往自己公司打款没用注明用途
  • 我国税收税类中的流转税
  • 筹建期的开办费开业后如何处理
  • 出差补贴算工资吗
  • 税收优惠应计入那个科目
  • 个人独资企业的投资人以其个人财产对企业债务承担
  • 企业一般账户开户申请理由
  • 代扣代缴完税凭证只能次月抵扣吗
  • 买断式回购交易情况
  • mysql触发器语句
  • Windows Server 2016第三技术预览版新特性详解:容器是亮点
  • windows图标显示不出来
  • pop3是什么意思中文
  • mysqld是什么进程
  • window10应用商店
  • 系统自动保存文件在哪里
  • 批处理修改文件名称
  • css控制文字换行
  • unity3d怎么写代码
  • 用python写多线性模型
  • unity鼠标移动控制角色旋转
  • js实现滑动效果
  • 安卓动画不流畅
  • js模拟点击alert()确定
  • 办理税控盘的流程
  • 收讫付讫是什么意思
  • 国家税务局查验发票显示网络异常
  • 安徽省国家税务局网上办税平台
  • 一般纳税人沙石税率是多少
  • 重庆电子税务局电话人工客服电话
  • 内蒙古包头东河机场
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设