问题描述
我是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);
}
}
@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 (将#修改为@)