无法从客户端发送修复消息

问题描述

我是FiX 世界的新手,目前正在学习如何在Java 应用程序之间发送修复消息。

我遇到了这个 Spring Boot starter,它基本上减少了样板代码我有两个 Spring Boot 启动器;一个充当发起者(客户端),另一个充当服务器(接受者)。

我在 repo 上查看了他们的示例,尽管它在多个场景中得到了很好的定义,但我无法从客户端向服务器发送简单的修复消息。

我的客户端代码包含一个控制器,当端点被调用时;它发送以下修复消息(我的主类实际上是您通常的 spring 主类,但它用 @EnableQuickFixJClient@SpringBootApplication 注释):

@RestController
public class SendMessageViaRest
{
@Autowired
QuickFixJTemplate quickFixJTemplate;

@GetMapping("/bob")
public void sendFix()
{
  System.out.println("HERHER");

  Message message = new Message();
  quickfix.Message.Header header = message.getHeader();
  message.setField(new OrigClOrdID("3434"));
  header.setField(new BeginString("FIX.4.1"));
  header.setField(new SenderCompID("BANZAI"));
  header.setField(new TargetCompID("EXEC"));
  header.setField(new MsgType("D"));
  message.setField(new OrigClOrdID("123"));
  message.setField(new ClOrdID("321"));
  message.setField(new HandlInst('3')); //CHANGE THIS TO RANDOM VALUE TO SEE WHAT HAPPENS
  message.setField(new OrdType('1'));
  message.setField(new Symbol("LNUX"));
  message.setField(new TransactTime(LocalDateTime.Now()));
  message.setField(new Side(Side.BUY));
  message.setField(new Text("Cancel My Order!"));

  quickFixJTemplate.send(message);
}
}

我的服务器代码库实际上只有一个 main 方法,仅此而已:

@EnableQuickFixJServer
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class,args);
    }

}

当我启动这两个应用程序时,我可以在两个应用程序的输出中看到登录请求/响应和心跳。但是当我在客户端应用程序中调用端点时;我收到以下错误

quickfix.FieldException: Tag not defined for this message type,field=41。为什么会出现我在消息中设置的情况?

此外,只是我想到的一个问题; 示例之一中的 class 扩展了 MessageCracker .. 让我们假设以下场景:客户端与 2 个服务器通信;一台服务器在 4.1 上通信,另一台服务器在 4.2 上通信。如果两个服务器都发送了 orderCancelRequest 消息,那么它如何知道要解析消息的协议版本?我问这个是因为在配置 class 中,他们为应用程序连接了一个消息破解程序,如果您的客户需要处理多个版本的修复怎么办?这将如何实现?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...