基于JPos的消息交换系统

消息交换系统需求解读

消息交换系统不不是一个具体的业务系统,而是业务系统的运转的基础框架;

他的运转是体现在报文交换上的;

要定义一个可被不同业务系统使用的报文规范;

报文格式

报文内容参考ISO8583(87版),传输使用XML形式。为不和标准冲突,目前吧自定义域放在87版的自定义域里。

具体定义可参考schema.xls

系统运转机制

基于JPos的消息交换系统是一个自管理的服务框架。

JPos作为消息平台十分灵活,为统一流程我们将设计一套网银专用的消息交换机制。

系统将建立3个层次,接入层、业务层、收单链路层;

每个层都是一或多个平等的组件,相互间可以通过Socket调用;

  • 一个标准的组件由下列几个模块组成

  • 服务器的工作机制

    作为一个服务程序它在启动后将监控一个部署目录,不断扫描并发现所有的XML配置文件。如果发现有新增或改动,就会用XML生成组件并加载到注册机里。
  • 消息交换流程
    1. 客户端把消息发送到组件服务
    2. 服务监听将接收到的消息转给入口通道
    3. 入口通道顺序执行被配置在这里的处理器
    4. 经过入口通道后消息被转给路由器
    5. 路由器根据配置域的为消息匹配一个出口通道
    6. 消息被转给出口通道
    7. 出口通道顺序执行配置在这里的处理器
    8. 消息被发送出去

配置文件

<!-- 服务监听 -->
<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>

最新文章

  1. postgresql 中replace 函数
  2. C#对于文件操作
  3. No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
  4. Nlog 记录日志到 sqlite
  5. [开源类库/项目] android保存崩溃时的错误信息log至本地【源码+jar包+使用说...
  6. 基于Spring MVC的Web应用开发(三) - Resources
  7. [转] c和python利用setsockopt获得端口重用
  8. iOS 开发问题集锦(一)
  9. app性能测试【通过loadrunner录制】
  10. tensorflow 使用 1 常量,变量
  11. 关于USBHID协议以及鼠标键盘描述符的解释【转】
  12. json2.js的作用与使用示例
  13. Subsonic 介绍
  14. Viewpager+Fragmnet懒汉式注意
  15. 正则表达式匹配a标签或div标签
  16. 简单说一下 servlet的生命周期?
  17. IE9以下程序开发不兼容项目罗列
  18. NHibernate利用Mindscape.NHibernateModelDesigner实现数据库与实体之间的转换及操作
  19. Traffic Real Time Query System HDU - 3686
  20. 你不知道的Eclipse用法:全局搜索和更替 (转载)

热门文章

  1. JavaScript——数组的indexOf()方法在IE8中的兼容性问题
  2. Android小玩意儿-- 从头开发一个正经的MusicPlayer(一)
  3. sqlserver2012 offset
  4. JavaScript 声明全局变量与局部变量
  5. COGS 74. [NOIP2006] 明明的随机数 (Splay小练习。。)
  6. SEO 第四章
  7. 【软件构造】第三章第五节 ADT和OOP中的等价性
  8. PHP13 会话控制
  9. 将中文库导入到ARM板子中以解决中文显示乱码的教程
  10. 牛客网数据库SQL实战 1-11