微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决无法从客户端发送修复消息

我是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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?