要求: 我想开发一个使用 JPOS Q2 Server 作为支付网关路由器的应用程序。基本要求是 Q2 服务器必须能够根据传入消息中的一个字段(作为标识符)来路由传入消息,并动态地从数据库中获取目标路由,并将消息进一步发送到目标主机。这可以使用 JPOS Q2 Server 来完成吗?如果是的话,怎么办?
消息流程: 源 ->(以字段 48 作为标识符的 ISO 消息)->Q2 SERVER->(进行一些处理,使用 DB 中的标识符获取目标地址)->目标主机->(反向响应源)
恐怕 jPOS 不支持开箱即用,但您有多种方法可以实现这一点。
您可以为每个可能的地址定义一个 ChannelAdaptor,如果它们太多,您可以创建某种脚本来从数据库生成部署文件。我想每个目的地在该数据库中都会有一个描述性名称,因此您可以使用它来命名通道适配器。
然后您可以在获取目的地的参与者中也获取该名称。然后,您将目标放入上下文中,并使用您自己的逻辑或 QueryHost 参与者,如 jpos 编程指南第 9.8.4 节中所述。
如果数据库中没有名称,那么您可以使用自己的命名并在某些属性或 xml 文件中定义映射。如果您没有更好的方法,您也可以使用目标地址作为频道的名称(最好在前面加上一些前缀)。
其他方法(我不知道是好是坏,但倾向于最坏)可能是动态创建一个通道来在自定义参与者中发送消息,而不使用 ChannelAdaptor。这将需要更多的 java 逻辑和更少的配置,而且您也会失去使用标准组件的好处。
这只是我立即想到的两个选项,但可能是我缺少的其他选项。我强烈建议采用第一个路径,如果目标表变量太大或太大,则使用一个可能的脚本来更新通道适配器描述符文件(我怀疑第二个路径,但以防万一我提到)。
基本上,您正在编写一种大型网关,因此,如果您还没有阅读 jpos 网关教程(wo 首先),请阅读它们,您将了解如何粘合第 9.8.* 节中找到的内容。您的代码将基于
SelectDestination
参与者。
请问@Diwas,您能解决这个问题吗?如果是的话,也许你可以给我一些提示来解决它。
提前致谢