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

  • 微信营销的误区(微信营销的误区是什么)

    微信营销的误区(微信营销的误区是什么)

  • 微博钱包提现系统繁忙(微博钱包 提现)

    微博钱包提现系统繁忙(微博钱包 提现)

  • qq空间删除此条访问记录对方能看到吗(qq空间删除此条访问记录对方还看得见访问记录吗)

    qq空间删除此条访问记录对方能看到吗(qq空间删除此条访问记录对方还看得见访问记录吗)

  • 佳能mp236手动清零方法(佳能打印机mp236清零步骤)

    佳能mp236手动清零方法(佳能打印机mp236清零步骤)

  • 小米10相机多少倍变焦(小米10相机多少倍)

    小米10相机多少倍变焦(小米10相机多少倍)

  • 企业微信登录失败(企业微信登录失效是什么原因导致的)

    企业微信登录失败(企业微信登录失效是什么原因导致的)

  • 为什么易驱线伤硬盘(易驱线内部结构)

    为什么易驱线伤硬盘(易驱线内部结构)

  • 抖音商品退货流程(抖音退货申请在哪)

    抖音商品退货流程(抖音退货申请在哪)

  • 怎么查看淘宝极速退款(怎么查看淘宝极速退款次数多少)

    怎么查看淘宝极速退款(怎么查看淘宝极速退款次数多少)

  • 美篇打不开怎么回事(美篇怎么了?无法打开)

    美篇打不开怎么回事(美篇怎么了?无法打开)

  • ipadmini3和mini4的区别(ipad mini3跟mini4)

    ipadmini3和mini4的区别(ipad mini3跟mini4)

  • 电脑没有主机可以用吗(电脑没有主机可以玩游戏吗)

    电脑没有主机可以用吗(电脑没有主机可以玩游戏吗)

  • 华为手机忘了锁屏密码怎么快速解开(华为手机忘了锁屏密码怎么刷机)

    华为手机忘了锁屏密码怎么快速解开(华为手机忘了锁屏密码怎么刷机)

  • word被锁定了怎么办(word被锁定了怎么弄)

    word被锁定了怎么办(word被锁定了怎么弄)

  • 小米9能不能反向充电(小米9可以反冲吗)

    小米9能不能反向充电(小米9可以反冲吗)

  • 蓝牙如何传输文件(蓝牙怎样传输文件?)

    蓝牙如何传输文件(蓝牙怎样传输文件?)

  • 手机如何添加打印机(手机如何添加打印机设备)

    手机如何添加打印机(手机如何添加打印机设备)

  • 车载u盘发烫怎么解决(车载u盘发烫会爆炸吗)

    车载u盘发烫怎么解决(车载u盘发烫会爆炸吗)

  • 面部识别坏了怎么修(面部识别坏了能修好吗)

    面部识别坏了怎么修(面部识别坏了能修好吗)

  • led power supply是什么意思

    led power supply是什么意思

  • oppo手机有行踪功能(oppo手机定位记录行迹)

    oppo手机有行踪功能(oppo手机定位记录行迹)

  • excel主要功能(excel主要功能有大型表格制作功能)

    excel主要功能(excel主要功能有大型表格制作功能)

  • ElementPlusError:[ElPagination] 你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档

    ElementPlusError:[ElPagination] 你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档

  • 【魔改YOLOv5-6.x(中)】加入ACON激活函数、CBAM和CA注意力机制、加权双向特征金字塔BiFPN(魔改6.67)

    【魔改YOLOv5-6.x(中)】加入ACON激活函数、CBAM和CA注意力机制、加权双向特征金字塔BiFPN(魔改6.67)

  • 税务清算都交什么费用
  • 月初没报完税可以开票吗
  • 如何申报个人所得税减免项目
  • 税务机关如何处理公司多交税
  • 企业缴纳的社保可以税前扣除吗
  • u8反记账操作步骤
  • 私营小微企业可以贷款吗
  • 房地产企业分立会计处理及税务筹划案例解析
  • 异地存货管理
  • 员工在社保局报备流程
  • 缴纳公积金工资基数
  • 国有资产无偿划转管理办法
  • 专票当月抵扣后当月作废会被发现吗
  • 五证合一后地税编码怎么查
  • 人工服务费发票
  • 什么是季初值和季末值
  • 销售方收到红字信息表
  • 管理不善存货损失 企业所得税
  • 其他应付款的会计英文
  • 外贸过程中的银行是什么
  • windows7中
  • linux查关键字
  • 增值税中的筹划方法哪些可以应用在消费税中,为什么?
  • zmweb.exe是什么进程
  • php事物
  • 预计负债的概念是什么
  • Vue3 & app.use 与 install 函数的作用
  • yolov2训练
  • 秋日里通往卢浮宫的杜乐丽花园,法国巴黎 (© Brian A. Jackson/Getty Images Plus)
  • twig教程
  • php docblocker
  • zendframework3中文手册
  • 待抵扣进项税额借贷方向
  • php curl_multi_init
  • 收到投资款的会计科目怎么入账
  • 图像分类实战
  • 出口销售折扣怎么处理
  • java rest接口
  • 查补税款
  • 固定资产多少可以一次摊销
  • 主营业务成本和生产成本的区别
  • 房屋发票备注栏怎么填
  • python中列表的索引用法
  • 长期借款利息是流动负债吗
  • 电脑word怎么学
  • 什么叫网银盾账户
  • 哪些情况可以免征个人所得税
  • sql分页存储过程
  • 增值税税率为零的有哪些项目
  • 企业记账的相关规定
  • 跨月凭证怎么冲销
  • 企业消费税应计入资产成本的有哪些
  • 自己开发财务软件
  • 附加税减半征收从什么时候开始
  • 其他业务收入与其他业务成本的关系
  • sqlserver中将varchar类型转换为int型再进行排序的方法
  • 深度解析天梁坐命
  • mac mysql密码忘记了怎么办
  • solaris 修改用户 主目录
  • ubuntu 编译软件
  • 移动硬盘中安装系统
  • linux查看sh
  • Win7系统如何打开磁盘管理工具
  • win8打游戏卡吗
  • win10系统无法运行海岛大亨5
  • android 音频焦点丢失 媒体按键
  • cocos2dx4.0教程
  • unity自带的代码编辑器
  • python随机数代码
  • unityprefab
  • jQuery同步提交示例代码
  • angularjs教程
  • fiddler如何抓取app接口的
  • 服务端测试是什么意思
  • android 字体设置
  • 江苏增值税发票代码
  • 税务稽查强制措施
  • 匈牙利离中国广东有多远
  • 税务局党支部党员大会会议记录
  • 个体工商户银行卡是对公还是对私
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设