[IB]Integration Broker 是如何处理传入的请求(Part 2)
让我们讨论一下集成代理如何处理传入的请求。可以先阅读(理解PeopleSoft集成代理 Part1)。
当PeopleSoft集成代理接收传入请求时,会发生一系列事件。
当侦听连接器(Listening Connector)接收到请求时,连接器所做的第一件事就是将请求写入到网关日志文件。请求是完全按照接收的方式编写的。这有助于在规范化发生之前捕获消息的发送。
然后,连接器尝试用收到的消息填充内部请求消息类。传入消息有2个部分——凭证和mesage body。值得注意的是,没有凭证的消息无法处理。如果网关接收到这样的消息,将会出现错误,并将错误消息返回给请求者。在此步骤中不发生解析——只是验证。
接下来,消息是PeopleSoft Target Connector来操作。这个连接器有两个主要职责:它将消息序列化为一个字符串,并通过与应用服务器的一个jolt连接发送该字符串。网关和应用服务器之间的所有通信都是通过使用多用途Internet邮件扩展(MIME)消息完成的。通常,MIME消息只有两个部分——消息正文和XML格式的凭证。
PeopleSoft Target Connector以标准格式转换消息,这样才能被网关和应用程序服务器所理解。所有消息最终都必须解析成这种格式,然后才能将其发送到应用服务器进行处理,否则appserver将无法理解它们。这种格式有效地将应用服务器与网关支持的协议隔离开来。
一旦MIME消息被构建,它就被写入到网关日志。然后将MIME响应解析回网关请求对象,然后返回到倾听连接器。
最后,连接器从integration properties file中查找jolt连接属性,并尝试将MIME发送到应用服务器。如果这些属性没有正确设置,网关将无法发送请求。
要记住的一点是,即使对appserver的MIME请求可能出现在网关日志文件中,实际的请求可能还没有到达应用服务器,因为日志条目是在消息发送之前写的。如果发生通信错误,该条目将仍然存在于日志文件中。但是,如果出现这种情况,将抛出异常,也将创建一个错误日志条目。
当应用服务器接收MIME请求时,将解析消息并用于构建请求对象。假定消息没有发生错误,应用程序服务器必须在实际处理请求之前预先处理消息。预处理包括:
- 根据配置的身份验证方案验证消息。如果请求失败身份验证,则返回一个错误。
确定是否有与节点事务表中的请求对应的事务。除了Ping消息,所有传入的消息都必须解析为该表中唯一的条目。如果不能为请求找到合适的事务,则发生错误。
确定要调用的消息处理程序。目前,集成代理支持三种消息类型:Ping、同步和异步。消息类型确定要调用的处理程序代码。同步消息传递到特定于sync的代码,而async消息传递给发布/订阅subsytem。
一旦消息传递给它们各自的处理程序,进一步的处理将由数据和特定于特定系统的人员决定。异步请求将被发布,订阅PeopleCode将被执行。同步消息可以调用PeopleCode,或者在集线器配置的情况下,请求可以立即路由到另一个外部系统。
8. 不管请求是如何处理的,响应消息必须由应用服务器返回到相同执行线程中的网关。网关与应用服务器之间的连接本质上是同步的,独立于交换的消息的类型。当网关向应用服务器发送请求时,它期望并必须得到响应。
在同步消息的情况下,响应的生成被请求的处理阻塞。无法生成响应,直到消息运行完成为止。在接收响应时,可能会有一个明显的延迟,这取决于PeopleCode是否正在运行,或者请求消息是否被从代理发送到外部系统以进行额外处理。
不像同步请求,在异步请求的情况下没有阻塞。当请求被写入发布队列时,将生成一个异步请求的响应。因此,对于异步请求生成的响应并不是最严格意义上的响应。这样的回答应该被认为是“pub / sub系统接收到消息”的响应。收到这样的响应并不能保证任何适用的订阅人员都成功运行了。
响应消息被应用服务器转换为MIME标准,并返回到网关。
9.一旦MIME PeopleSoft Target Connector收到响应,它是日志文件写入到网关。然后将MIME响应解析回网关请求对象,然后返回到ListeningConnector。
10. reponse对象被返回到ListeningConnector,响应被映射到一个响应给定协议的响应。从ListeningConnector的角度来看,请求消息的处理是同步进行的。一个请求被一个ListeningConnector接收,然后将其覆盖到合适的格式,对网关进行阻塞调用,以处理消息,并最终在执行的相同线程中得到响应。
如果感到对您有帮助没准儿你就会赞赏,iOS 专用赞赏通道:
[IB]Integration Broker 是如何处理传入的请求(Part 2)的更多相关文章
- 理解PeopleSoft集成代理(Integration Broker)-第1部分
PeopleSoft 集成代理对于那些刚开始开发PeopleSoft的工程师来说是模糊的,因此,本文的目的是帮助哪些想要了解Peoplesoft集成代理的人. 介绍PeopleSoft集成代理 peo ...
- ASP.NET Core应用针对静态文件请求的处理[3]: StaticFileMiddleware中间件如何处理针对文件请求
我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的介绍,从提供的功能和特性的角度对这个名为StaticFileMidd ...
- StaticFileMiddleware中间件如何处理针对文件请求
StaticFileMiddleware中间件如何处理针对文件请求 我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的 ...
- IIS 是如何处理 ASP.NET 请求的
#main{ width:1250px; } #mainContent{ width:915px } img#imgTop{ max-width:850px; } Web 服务器 VS Web 应用程 ...
- 根据传入url请求,返回json字符串
/** * 根据传入url请求,返回json字符串 * @param url * @return * @throws UnsupportedEncodingException */ public st ...
- IIS是如何处理ASP.NET请求的
每次服务器接受到请求,都要先经IIS处理.这不是一篇描述ASP.NE生命周期的文章,仅仅是关于IIS操作的.在我们开始之前,先了解这些会有助于对全文的理解,同时欢迎反馈和建议. 什么是Web Serv ...
- [转载]LoadRunner如何处理AJAX异步请求
最近在网上经常有人问“LoadRunner脚本回放成功,但数据没有写入数据库,这是什么原因”,记得以前的同事也遇到过相同的问题,再次将解决方法贴出来,希望能帮助大家. 相信大家在做测试的过程中,特别是 ...
- 记录python接口自动化测试--从excel中读取params参数传入requests请求不生效问题的解决过程(第七目)
在第六目把主函数写好了,先来运行一下主函数 从截图中可以看到,请求参数打印出来了,和excel中填写的一致 但是每个接口的返回值却都是400,提示参数没有传进去,开始不知道是什么原因(因为excel中 ...
- spring mvc后台如何处理ajax的请求,并返回json
spring mvc中有一个注解:@ResponseBody,把这个注解放到ajax请求对应的@RequestMapping(xxx)方法上,在方法体内部,把要返回的json赋给一个String类型的 ...
随机推荐
- 数据结构图解(递归,二分,AVL,红黑树,伸展树,哈希表,字典树,B树,B+树)
递归反转 二分查找 AVL树 AVL简单的理解,如图所示,底部节点为1,不断往上到根节点,数字不断累加. 观察每个节点数字,随意选个节点A,会发现A节点的左子树节点或右子树节点末尾,数到A节点距离之差 ...
- Web发展简史(精编故事版,贤来给你讲故事)
Web发展简史 一. Web发展简史之隔壁老王的故事 有一个人叫隔壁老王,老王有一个爱好就是爱看电影.有一天,这个隔壁老王想看一部电影,可是电脑里面存储的电影太多了,他费了老大劲才从里面找到,觉得很不 ...
- Redis 搭建文档,备份及认证
wget http://download.redis.io/releases/redis-3.0.6.tar.gz为了方便管理,将Redis文件中的conf配置文件和常用命令移动到统一文件中[root ...
- 本地语音识别开源软件pocketsphinx调试总结
1问题一: fatal error: pocketsphinx.h: No such file or directory 解决方法: $ cd /usr/include $ sudo ln -s /m ...
- 一道题引出对LinkedList源码的研究
题目:打开一个文本文件,每次读取一行内容,将每行作为一个String读入,并将那个String对象置入一个LinkedList中,按照相反的顺序打印出LinkedList中的所有行. 解题代码: pu ...
- Spring Cloud微服务如何设计异常处理机制?
导读 今天和大家聊一下在采用Spring Cloud进行微服务架构设计时,微服务之间调用时异常处理机制应该如何设计的问题.我们知道在进行微服务架构设计时,一个微服务一般来说不可避免地会同时面向内部和外 ...
- mesos支持gpu代码分析以及capos支持gpu实现
这篇文章涉及mesos如何在原生的mesoscontainerizer和docker containerizer上支持gpu的,以及如果自己实现一个mesos之上的framework capos支持g ...
- mysql 开发基础系列5 运算符
1. 算术运算符 2.比较运算符 注意NULL值不能用= 运算符 SELECT * FROM t WHERE c =NULL; -- 需要改成 SELECT * FROM t WHERE c IS N ...
- C++版 - 剑指offer 面试题63:二叉搜索树的第k个结点(二叉树中序遍历的应用) 题解
面试题 63:二叉搜索树的第k个结点 题目:给定一颗二叉搜索树,请找出其中的第k大的结点.例如, 5 / \ 3 7 /\ /\ 2 4 6 8 (见下面的图1) 中,按结点数值大小顺序第三个结点的值 ...
- Apache Flume 1.7.0 自定义输入输出
自定义http source config a1.sources.r1.type=http a1.sources.r1.bind=localhost a1.sources.r1.port= a1.so ...