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

  • 荣耀X30Max支持内存卡吗(荣耀x30max参数配置详情)

    荣耀X30Max支持内存卡吗(荣耀x30max参数配置详情)

  • 支付宝果树多少级成熟(支付宝果树多少级换水果)

    支付宝果树多少级成熟(支付宝果树多少级换水果)

  • 微信动态背景图怎么弄全屏(微信动态背景图视频)

    微信动态背景图怎么弄全屏(微信动态背景图视频)

  • 荣耀30pro+屏幕大小(荣耀30pro屏幕尺寸比例)

    荣耀30pro+屏幕大小(荣耀30pro屏幕尺寸比例)

  • 怎样用手机翻译英文成中文(怎样用手机翻译日语成中文)

    怎样用手机翻译英文成中文(怎样用手机翻译日语成中文)

  • 佳能mp288怎么加墨水(佳能mp288怎么安装墨盒)

    佳能mp288怎么加墨水(佳能mp288怎么安装墨盒)

  • 为什么p站视频一直在加载中(为什么p站视频不能全屏)

    为什么p站视频一直在加载中(为什么p站视频不能全屏)

  • vivoS1照片怎么旋转过来(vivo手机照片怎样旋转)

    vivoS1照片怎么旋转过来(vivo手机照片怎样旋转)

  • ipaid怎么使用多屏(ipad多用户怎么设置)

    ipaid怎么使用多屏(ipad多用户怎么设置)

  • 华为是哪个国家的品牌(华为是哪个国家生产的手机)

    华为是哪个国家的品牌(华为是哪个国家生产的手机)

  • 网关不可用是什么意思(网关不可用是什么意思考研报名进不去)

    网关不可用是什么意思(网关不可用是什么意思考研报名进不去)

  • typec转接头对音质有影响吗(type-c转接口影响音质吗)

    typec转接头对音质有影响吗(type-c转接口影响音质吗)

  • excel2013扩展名是什么(excel扩展名是什么样的)

    excel2013扩展名是什么(excel扩展名是什么样的)

  • 微信有必要绑定qq吗(微信有必要绑定银行卡吗)

    微信有必要绑定qq吗(微信有必要绑定银行卡吗)

  • 如何取消视频号(如何取消视频号功能)

    如何取消视频号(如何取消视频号功能)

  • 三星s10和s10e区别(三星s10和s10e哪个好)

    三星s10和s10e区别(三星s10和s10e哪个好)

  • mate30有红外么(mate30有红外线功能吗)

    mate30有红外么(mate30有红外线功能吗)

  • 如何快速清除小米实名(如何快速清除小程序使用记录)

    如何快速清除小米实名(如何快速清除小程序使用记录)

  • 微信打卡小程序怎么弄(微信打卡小程序怎么补打卡)

    微信打卡小程序怎么弄(微信打卡小程序怎么补打卡)

  • 浅析青少年沉迷网络游戏的五大原因(分析青少年学生沉迷于网络的危害)

    浅析青少年沉迷网络游戏的五大原因(分析青少年学生沉迷于网络的危害)

  • 电脑全选是ctrl加什么(全选的电脑快捷键是什么)

    电脑全选是ctrl加什么(全选的电脑快捷键是什么)

  • vivox23怎么不闪充啦(vivox23闪烁灯在哪里)

    vivox23怎么不闪充啦(vivox23闪烁灯在哪里)

  • 网易新闻如何删除评论(网易新闻如何删除自己的跟帖)

    网易新闻如何删除评论(网易新闻如何删除自己的跟帖)

  • 网线8根线必须全通吗(网线8根线必须接地线吗)

    网线8根线必须全通吗(网线8根线必须接地线吗)

  • 小规模纳税人通用申报表
  • 更正申报后可以作废吗
  • 普通电子发票如何冲红
  • 会计凭证辅助项
  • 青年企业家协会入会要求
  • 计算消费税时运费计入计税依据么
  • 工业企业所得税优惠政策
  • 电子发票和网络发票的区别和联系
  • 一次性奖金收入如何交个税
  • 补偿性余额利息的计算公式
  • 企业充值是什么意思
  • 企业网银短信提醒费用
  • 退预付账款会计分录
  • 小规模无进项发票,需要开1%专票,税点是多少
  • 一张报关单可以分批退税吗
  • 通用机打发票什么样子
  • 劳务派遣差额部分可以开专票吗
  • 金税四期具体内容
  • 科技型中小企业享受优惠税收政策2023
  • 税控技术服务费需要交印花税吗
  • 以前年度损益在借方
  • 办公用品普通发票的会计分录
  • 筹资活动流入的现金是内源融资吗
  • 应收出口退税属于哪个会计科目
  • 怎么计算房产税率
  • 所得税招待费用
  • 购买原材料的运输费计入什么科目
  • 苹果输入法快捷键怎么调出来
  • 宽带连接错误代码691
  • win10输入法没有候选词
  • 前端架构怎么搭建
  • 工业企业采购部工作职责
  • php表单的作用是什么
  • php面向对象的三大特征
  • 小程序官方组件展示
  • 电子税务局没有开票业务
  • 小企业会计准则外币业务
  • 小规模纳税人开农产品免税发票
  • 推广费的比例
  • 做账计提是什么意思
  • python中如何创建一个对象
  • 预计可变现净值与账面成本的关系
  • 差旅费需要缴纳增值税吗
  • 收据的种类是有几种
  • 维修费开专票怎么做账
  • 财务报表与分析outcome2
  • 销售提成如何入账
  • 出口货物退免税的管理规定
  • 应收账款坏账计提比例新标准
  • 收到科技局补贴金费怎么入账
  • 关联方资金往来是否收取利息
  • 贸易公司如何核名
  • 开服装店如何做销售
  • 暂估怎么冲回
  • 材料发票失控后如何处理
  • 资产减值损失审计程序是什么
  • sql server数据库查询语句
  • navicat 导入
  • winxp系统提速
  • 神舟平板寸劲开天
  • 升级bios后无法启动
  • linux没有ssh
  • Win10 Mobile RS2预览版14905更新内容大全:全新精致铃声
  • 如何提升windows版本
  • Win7 64位旗舰版设置字体显示比例让字体变大
  • linux系统的服务器有哪些
  • [置顶] [寒江孤叶丶的Cocos2d-x之旅_29]在Cocos2d-x中集成protobuf (Protocol Buffers)
  • apk防止反编译
  • jquery 延迟执行方法
  • ztree getnodebytid
  • js行号显示的文字不一样
  • unity3drpg游戏
  • android获取设备输出声音
  • 认识iu
  • js实现继承的几种方式详述(推荐)
  • android图片压缩库
  • 北京医保网上服务大厅
  • 计算消费税为什么要除1-比例税率
  • 河北省职称证去哪里查
  • 杜蕾斯验证真伪扫描
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设