我更新了我的旧 spring/java 应用程序,它将事务推送到远程 ISO 服务器(银行)。使用经典方法(channel.seng(isoMsg))通过同步方法,因为通过同一通道发送多个 ISO 请求很难映射请求和响应。过去有太多事务留在队列中,因为每个事务需要 5 秒才能从远程服务器接收响应。因此,所有即将进行的事务都会超时。为了解决这个问题,我开始实施 QMUX。该系统现已上线。
现在我的问题是,如果已经有 50 笔交易的响应未到达或超时,银行告诉我不要发送交易。
所以,现在我需要配置 MUX 框架,以便一旦系统等待 50 个响应,框架应该停止发送并应该在我的末尾排队,当它收到 1 个响应时,它可以再次发送一个事务以保持等待总数响应小于或等于 50。如何使用 jpos QMUX 实现此目的?
出于某种原因,我想读取我在 QMUX 配置文件(20_client_mux.xml)中设置的密钥。<key>37</key>我无法从 jpos 本身找到任何方法,所以我使用下面的代码来完成任务。我想在不使用 Reflection 的情况下做到这一点,如果不需要创建扩展 或 的子类,我很QMUX高兴XMLConfigurable。
import org.springframework.util.ReflectionUtils;
private static String getUniqueFieldId() {
final String[][] key = {new String[1]};
ReflectionUtils.doWithFields(QMUX.class, field -> {
if (field.getName().equals("key")) {
field.setAccessible(true);
key[0] = (String[]) field.get(mux);
}
});
return key[0][0];
}
Run Code Online (Sandbox Code Playgroud)