消息批处理端口说明

news2024/9/9 1:00:05

为满足用户需要对多文件做批处理的需求,在2022版本的知行之桥中,开发人员开发设计了3个新的端口,分别是Batch Create 端口、Batch Merge 端口和Batch Split 端口。

功能是对传入端口的消息做批处理,使得消息可以在批处理组中分组在一起,这允许多条消息作为一个单元一起传输。当消息是批处理组的一部分时,它被称为批处理消息。比如,供应商的EDI系统收到采购商发来的多条订单,端口会将收到的多条订单做批处理转换为批处理组。这三个端口的使用功能有些许的不同,我们一起来看看吧!

一、Batch Create 端口

Batch Create 端口可用于传输带附件的文件,端口可识别业务编号,并将同一笔业务的附件及文件进行打包,转为批处理组。除了该场景,还可以根据用户的具体需求灵活使用。

输入列表中的多条消息可生成为批处理组,输出列表中的内容便是批处理组。如下图所示,输入文件数为四条,转换为输出的一条批处理组。

 点击输出的一条批处理组文件,可以查看到批处理组内容和批处理消息。其中批处理组消息中仍是四条报文,点击下载文件,会以ZIP文件的格式将这四条数据进行下载。

 所以,Batch Create 端口只能接受单个消息作为输入。如果端口接收到现有批处理组作为输入,它会引发错误消息。

该端口也可根据设置做批处理操作,比如在Advanced Settings栏目中的设置:

(1)Correlation Id 头

在“Correlation Id 头”处填写设置参数,端口会找到输入文件与参数值相同的Message Header,将Message Header值相同的消息分为一组。比如,需要不同业务类型的消息进行分组,可以在该端口前,设置Message Header名称为messagetype,值为业务类别代码。在Correlation Id 头中配置messagetype,那么传入该端口的消息,会根据messagetype进行批处理,同种业务的消息分为一组。

首先,需要在Batch Create端口前面连接Script端口,在该端口中编写脚本,将消息的业务类型放入Message Header: messagetype。因消息文件的命名都有固定的规则,业务类型可从文件名的前缀获取。

发货通知文件的Message Header名称为messagetype,值为ASN。

 

该示例是将发货通知消息处理为一个批消息组:

 

该示例是将发票消息处理为一个批消息组:

 

 

(2)最大批处理大小 & 最小批处理大小

最大批处理大小。指定要包含在批处理组中的最大消息数。任何超过此数量的消息都将等到下一个发送间隔。例如,如果将其设置为 5,并且七个消息到达 “发送” 文件夹,则端口会创建一个包含五个消息的批处理组,并将最后两个消息添加到下一个的批处理组中。默认值为-1,则不做最大批处理设置。

最小批处理大小。指定创建批处理组必须存在的最小消息数。 例如,如果将此设置为 5,并且三个消息到达“发送”文件夹,则端口将不会将这三个消息创建批处理组(即使经过了指定的发送间隔),直到至少额外两个消息到达,才会进行处理。默认值为-1,则不做最小批处理设置。

(2)配置自动化

 

同其他端口一样,在端口的“自动化”页面,勾选“启用自动化”,可开启文件的“定时发送”。该端口的消息发送都需采用定时发送模式,请勿手动发送,否则有可能会导致错误产生。可根据需要设置“发送间隔”,再在“第几分钟/小时”中设置具体的间隔时长。

 

 

二、Batch Merge 端口

Batch Merge 端口适用于这样的场景,比如接收到的采购商发来的每条850订单中,明细以单行的形式出现,若订单有多行明细,且头部信息相同。那就可将同一单的多条850数据合并为一条数据发送给客户。

接收到批处理组消息,并将批处理组中的批处理消息,按照设置合并为单个消息。该端口只能接受 Batch Groups 作为输入。 如果端口接收到单个消息作为输入,它会抛出错误消息。

在“设置”页面中需配置“Xpath”,端口根据Xpath设置的值,来确定在合并批处理消息时要使用的重复 XML 元素。

 

比如,下面两条XML作为一个批处理做传入端口:

XML一:

<Orders>

    <Shipping>

        <Item>Paper</Item>

        <Quantity>100</Quantity>

        <Recurring>Yes</Recurring>

    </Shipping>

    <Shipping>

        <Item>Eraser Bulk</Item>

        <Quantity>20</Quantity>

        <Recurring>No</Recurring>

</Shipping>

</Orders>

XML二:

<Orders>

    <Shipping>

        <Item>Pencil, Box 100</Item>

        <Quantity>10</Quantity>

        <Recurring>Yes</Recurring>

</Shipping>

</Orders>

如果 “XPath” 的值设置为 “/Orders/Shipping”,则输出消息将合并如下:

<Orders>

    <Shipping>

        <Item>Paper</Item>

        <Quantity>100</Quantity>

        <Recurring>Yes</Recurring>

    </Shipping>

    <Shipping>

        <Item>Eraser Bulk</Item>

        <Quantity>20</Quantity>

        <Recurring>No</Recurring>

    </Shipping>

    <Shipping>

        <Item>Pencil, Box 100</Item>

        <Quantity>10</Quantity>

        <Recurring>Yes</Recurring>

</Shipping>

</Orders>

也就是将多条消息merge为一条消息。

三、Batch Split 端口

 

 

Batch Split端口可用于传输带附件的文件的项目中,使用该端口可以将接收的交易伙伴的附件以及报文分为单个的文件。

将到达该端口的批处理组拆分为单个消息,与Batch Create 端口操作相反。如果端口接收到单个消息作为输入,它会抛出错误消息。

在端口配置面板中,“高级设置”部分包含“Correlation Id头”字段。当拆分批处理组时,Batch Split端口会根据批处理组 MessageId 为标头生成一个值,然后将相同的标头和值分配给每个单独的消息。

 

比如下图,设置“Correlation Id头”值为“batchFrom”,将批消息组拆分为单个消息后,会将批消息组的“消息ID”值,写入该组拆分后的单个消息的“batchFrom”中。

 

 

更多 EDI 信息,请参阅: EDI 是什么?

阅读原文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/165934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mybatis-plus分布式id重复问题

问题起因 k8s 部署的一个服务的两个节点集群 最近频繁报错&#xff0c;数据库主键ID重复&#xff0c;导致数据插入报错 问题定位 还在定位。。。。 问题解决 解决办法主要有两个 指定mybatis-plus workerId dataCenterId 全局配置 #注意这里使用的随机策略 随机区间 …

智能边缘网关

背景介绍 调研发现&#xff0c;数字经济为工业物联网、智能交通以及智慧医疗等场景提出了新的解决方案。工程师利用传感器边缘网关云服务器的系统架构&#xff0c;通过大数据及人工智能算法进行辅助决策&#xff0c;最终为工业设备赋能&#xff0c;提高加工生产效率。近年来&am…

sqli-labs 11~14 多命通关攻略(报错注入)

sqli-labs 11~14 多命通关攻略&#xff08;报错注入&#xff09;描述判断注入类型返回结果错误输入总结符号注释判断返回结果中的列数判断返回结果中的列数为 1判断返回结果中的列数为 2报错注入通过报错注入爆破数据库中的表名通过报错注入爆破数据库中的表名&#xff08;逻辑…

【高阶数据结构】封装unordered_map 和 unordered_set

&#x1f308;欢迎来到数据结构专栏~~封装unordered_map 和 unordered_set (꒪ꇴ꒪(꒪ꇴ꒪ )&#x1f423;,我是Scort目前状态&#xff1a;大三非科班啃C中&#x1f30d;博客主页&#xff1a;张小姐的猫~江湖背景快上车&#x1f698;&#xff0c;握好方向盘跟我有一起打天下嘞&…

【北京理工大学-Python 数据分析-3.1Pandas库的基本使用】

Pandas库的引用&#xff0c;常用两大功能Series(一维&#xff09;和DataFrame&#xff08;二维和多维&#xff09; Pandas是Python第三方库&#xff0c;提供高性能易用数据类型的分析工具。 Pandas基于NumPy实现&#xff0c;常与NumPy和Matplotlib一起使用。 Numpy和Pandas的…

SpringCloud-Netflix学习笔记03——什么是Eureka

什么是Eureka Eureka&#xff1a;怎么读&#xff1f; Netflix 在设计Eureka 时&#xff0c;遵循的就是AP原则。 1、CAP原则又称CAP定理&#xff0c;指的是在一个分布式系统中 2、一致性&#xff08;Consistency&#xff09; 3、可用性&#xff08;Availability&#xff09; 4、…

详细实例说明+典型案例实现 对动态规划法进行全面分析 | C++

第三章 动态规划法 目录 ●第三章 动态规划法 ●前言 ●一、动态规划法是什么&#xff1f; 1.简要介绍 2.生活实例 ●二、动态规划法对斐波那契数列的优化 1.优化方法 2.优化核心代码片段 3.代码实现以及结果展示 ●三、动态规划法的典型案例——最短总距离 …

c语言文件操作(万字解析)

c语言文件操作一.文件的打开与关闭1.文件指针-FILE*2.文件的打开与关闭二.文件的顺序读写1.字符操作函数-fgetc和fputc2.字符串操作函数-fgets和fputs3.格式化函数-fprintf和fscanf4.二进制函数-fread和fwrite5.对比一组函数三.文件的随机读写1.fseek和ftell2.调整指针-rewind四…

Python NumPy 数组索引

前言NumPy&#xff08;Numerical Python的缩写&#xff09;是一个开源的Python科学计算库。使用NumPy&#xff0c;就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数&#xff0c;涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍Python NumPy 数组索引…

动态内容管理

这期我们来看动态内存管理的相关知识&#xff0c;话不多说&#xff0c;我们来看今天的正题 目录 1.为什么要有动态内存管理&#xff1f; 2.动态内存函数的介绍 2.1.malloc和free 2.2.calloc 2.3.realloc 3. 常见的动态内存错误 3.1 对NULL指针的解引用操作 3.2 对动态开…

Pytorch DataLoader中的num_workers (选择最合适的num_workers值)

一、概念 num_workers是Dataloader的概念&#xff0c;默认值是0。是告诉DataLoader实例要使用多少个子进程进行数据加载(和CPU有关&#xff0c;和GPU无关) 如果num_worker设为0&#xff0c;意味着每一轮迭代时&#xff0c;dataloader不再有自主加载数据到RAM这一步骤&#xff0…

滑动列表中使用粒子特效层级问题

前言 前面几个月疯狂堆功能,现在开始疯狂加动效,每次一说到动效就脑壳痛,还不如让我写功能。这不,今天又遇到问题了。滑动列表中mask粒子特效问题遮挡。 情况1 步骤1:使用粒子特效的层级应该>当前ui层级。 例如:当前界面所在层级为2000,其上的粒子特效至少为2001。…

dp(八)买卖股票的最好时机 (一,二、三)

目录 买卖股票的最好时机(一)_牛客题霸_牛客网 买卖股票的最好时机(二)_牛客题霸_牛客网 买卖股票的最好时机(三)_牛客题霸_牛客网 假设你有一个数组prices&#xff0c;长度为n&#xff0c;其中prices[i]是股票在第i天的价格&#xff0c;请根据这个价格数组&#xff0c;返回买…

基于云的文档管理系统:DocuWare Cloud

云文档管理软件&#xff1a;DocuWare Cloud 一流的云文档管理软件和工作流自动化内容服务&#xff0c;适用于任何规模的团队和公司——在多租户云平台上交付。 DocuWare Cloud 可在订阅的基础上为不同规模的公司提供灵活的许可证。 每个订阅都涵盖全方位的服务&#xff0c;包…

dvwa中的爆破

环境&#xff1a;dvwa: 192.168.11.135 dvwa版本&#xff1a; Version 1.9 (Release date: 2015-09-19)kail机器&#xff1a;192.168.11.1561、Low级别代码&#xff1a;1、启动 burpsuite 开始抓包&#xff0c;然后点击 login&#xff0c;然后在 bp 里面就能看见抓包到的包。这…

Java集合常见面试题(二)

Collection 子接口之 List ArrayList 和 Vector 的区别? ArrayList 是 List 的主要实现类&#xff0c;底层使用 Object[]存储&#xff0c;适用于频繁的查找工作&#xff0c;线程不安全 &#xff1b;Vector 是 List 的古老实现类&#xff0c;底层使用Object[] 存储&#xff0…

谷粒学院复习

一、Mybatis Plus复习分布式系统唯一ID主键策略(面试)面试的时候就说知道有以下四种策略&#xff0c;分别介绍一下每一种&#xff0c;然后说一下项目中用的是雪花算法分类自动增长 AUTO INCREMENT就是自动增长&#xff0c;每次都会自动加一。缺点&#xff1a;如果在分库分表的场…

VUE: Vue3+TS的项目搭建及基础使用

简介 通过 Vue-cli4 创建的 Vue3TS 的项目&#xff0c;并进行一些基础使用的举例。 项目搭建 1. 进入命令提示符窗口 在要搭建项目的文件夹中&#xff0c;点击路径&#xff0c;输入CMD并按回车 2. 查看node版本、Vue-cli版本 2.1 node版本&#xff08;14.x以上&#xf…

基于域控的SSO单点登录

大家好&#xff0c;好久不见&#xff0c;今天老吕给大家来一篇偏冷门知识的文章。一、需求大型集团企业内部会有许多业务系统&#xff0c;工作人员也往往需要登录多个业务系统才能完成工作&#xff0c;这就可能会存在一些问题1、多套账号与密码需要记录或者记忆2、多次登录&…

14.live555mediaserver-setup请求与响应

live555工程代码路径 live555工程在我的gitee下&#xff08;doc下有思维导图、drawio图&#xff09;&#xff1a;https://gitee.com/lure_ai/live555/tree/master 学习demo live555mediaserver.cpp 学习线索和姿势 1.学习的线索和姿势 网络编程 流媒体的地基是网络编程&…