要求: 我想使用JPOS Q2 Server作为支付网关路由器开发应用程序。基本要求是Q2服务器必须能够根据来自该传入消息的一个字段(作为标识符)路由传入消息,并动态地从数据库中获取目标路由,并将该消息进一步发送到目标主机。这可以使用JPOS Q2 Server完成吗?如果是,怎么样?
消息流: 来源 - > (带有字段48作为标识符的ISO消息) - > Q2 SERVER->(进行一些处理,使用来自DB的标识符获取目标地址) - >目的地主机 - >(反向回复源)
答案 0 :(得分:0)
我担心jPOS不支持开箱即用,但你有几种方法可以实现这一目标。
您可以为每个可能的地址定义一个ChannelAdaptor,如果它们太多,您可以创建某种从数据库生成部署文件的脚本。我猜每个目标在该数据库中都有一个描述性名称,因此您可以使用它来命名通道适配器。
然后你可以在获得目的地的参与者中获得该名称。然后根据QueryHost participant的第9.8.4节中的描述,输入目的地的上下文并使用您自己的逻辑或the jpos programming guide。
如果数据库中没有名称,则可以使用自己的命名并在某些属性或xml文件中定义映射。如果你没有更好的方法,你也可以使用目的地地址作为频道的名称(最好用一些前缀作为前缀)。
其他方法(我不知道是好还是坏,但倾向于最差)可以动态创建一个频道,在自定义参与者中发送消息,而根本不使用ChannelAdaptor。这将需要更多的Java逻辑和更少的配置,也会失去使用标准组件的好处。
这只是我想到的两个选项,但可能是我缺少的其他选项。我强烈建议使用第一个路径,如果目标表太可变或太大(第二个我怀疑,但是我提到的话),可能会更新通道适配器描述符文件的脚本。
基本上你正在编写一种大型网关,所以如果你还没有阅读过jpos网关教程(the wo first),请阅读它们,你就会明白如何粘贴你在9.8。*中找到的内容。您将代码基于to_tsvector('simple', text)
参与者。