JPos学习
2024-09-30 13:25:42
基于JPos的消息交换系统
消息交换系统需求解读
消息交换系统不不是一个具体的业务系统,而是业务系统的运转的基础框架;
他的运转是体现在报文交换上的;
要定义一个可被不同业务系统使用的报文规范;
报文格式
报文内容参考ISO8583(87版),传输使用XML形式。为不和标准冲突,目前吧自定义域放在87版的自定义域里。
具体定义可参考schema.xls。
系统运转机制
基于JPos的消息交换系统是一个自管理的服务框架。
JPos作为消息平台十分灵活,为统一流程我们将设计一套网银专用的消息交换机制。
系统将建立3个层次,接入层、业务层、收单链路层;
每个层都是一或多个平等的组件,相互间可以通过Socket调用;
一个标准的组件由下列几个模块组成
- 服务器的工作机制
作为一个服务程序它在启动后将监控一个部署目录,不断扫描并发现所有的XML配置文件。如果发现有新增或改动,就会用XML生成组件并加载到注册机里。 - 消息交换流程
- 客户端把消息发送到组件服务
- 服务监听将接收到的消息转给入口通道
- 入口通道顺序执行被配置在这里的处理器
- 经过入口通道后消息被转给路由器
- 路由器根据配置域的为消息匹配一个出口通道
- 消息被转给出口通道
- 出口通道顺序执行配置在这里的处理器
- 消息被发送出去
配置文件
<!-- 服务监听 --> < server class = "org.jpos.q2.iso.QServer" logger = "Q2" name = "module" > < attr name = "port" type = "java.lang.Integer" >9031</ attr > <!-- 入口通道 --> < channel class = "org.jpos.iso.channel.XMLChannel" logger = "Q2" packager = "org.jpos.iso.packager.XMLPackager" > <!-- 入口通道内的处理器,如果不需要要也可以不配置 --> <!-- 方向incoming:匹配消息进入,outgoing:匹配消息返回--> < filter class = "com.example.jpos.client.TestFilter" direction = "incoming" > < property name = "fields" value = "0 2 3" /> </ filter > </ channel > <!-- 路由器 --> <!-- 这里是根据32域匹配出口通道 --> < request-listener class = "org.jpos.apps.qsp.Q2Router" logger = "Q2" > < router switch = "${32}==01" type = "mux" bounce = "true" destination = "out1" timeout = "30000" /> < router switch = "${32}==02" type = "mux" bounce = "true" destination = "out2" timeout = "30000" /> </ request-listener > </ server>
|
<!-- 出口通道需要用mux链接 --> < mux class = "org.jpos.q2.iso.QMUX" logger = "Q2" name = "out1" > < in >receive</ in > < out >send</ out > </ mux > < channel-adaptor name = "channeladaptor" class = "org.jpos.q2.iso.ChannelAdaptor" logger = "Q2" > <!-- 出口通道 --> < channel name = "channel" class = "org.jpos.iso.channel.XMLChannel" logger = "Q2" packager = "org.jpos.iso.packager.XMLPackager" > < property name = "host" value = "localhost" /> < property name = "port" value = "9051" /> </ channel > < in >send</ in > < out >receive</ out > < reconnect-delay >1000</ reconnect-delay > </ channel-adaptor > |
最新文章
- postgresql 中replace 函数
- C#对于文件操作
- No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
- Nlog 记录日志到 sqlite
- [开源类库/项目] android保存崩溃时的错误信息log至本地【源码+jar包+使用说...
- 基于Spring MVC的Web应用开发(三) - Resources
- [转] c和python利用setsockopt获得端口重用
- iOS 开发问题集锦(一)
- app性能测试【通过loadrunner录制】
- tensorflow 使用 1 常量,变量
- 关于USBHID协议以及鼠标键盘描述符的解释【转】
- json2.js的作用与使用示例
- Subsonic 介绍
- Viewpager+Fragmnet懒汉式注意
- 正则表达式匹配a标签或div标签
- 简单说一下 servlet的生命周期?
- IE9以下程序开发不兼容项目罗列
- NHibernate利用Mindscape.NHibernateModelDesigner实现数据库与实体之间的转换及操作
- Traffic Real Time Query System HDU - 3686
- 你不知道的Eclipse用法:全局搜索和更替 (转载)