Spring boot 如何使用quickfixj spring引导启动器从服务器捕获执行报告?

Spring boot 如何使用quickfixj spring引导启动器从服务器捕获执行报告?,spring-boot,fix-protocol,quickfixj,Spring Boot,Fix Protocol,Quickfixj,同事们,我正在向服务器发送NewOrderSingle消息,服务器接收消息并发送响应(执行报告(35=8)): 在单元测试中,这个方法的结果是true,但我在日志中没有看到服务器的响应(执行报告(35=8)) 我有ApplicationListener课程: @Slf4j @Component public class ApplicationListener { @EventListener public void handleCreate(Create create) {

同事们,我正在向服务器发送
NewOrderSingle
消息,服务器接收消息并发送响应(执行报告(35=8)):

在单元测试中,这个方法的结果是
true
,但我在日志中没有看到服务器的响应(执行报告(35=8))

我有
ApplicationListener
课程:

@Slf4j
@Component
public class ApplicationListener {


    @EventListener
    public void handleCreate(Create create) {
        log.info("onCreate: SessionId={}", create.getSessionId());
    }


    @EventListener
    public void handleLogon(Logon logon) {

        log.info("onLogon: SessionId={}", logon.getSessionId());
    }

    @EventListener
    public void handleLogout(Logout logout) {
        log.info("onLogout: SessionId={}", logout.getSessionId());
    }

    @EventListener
    public void handleToAdmin(ToAdmin toAdmin) {

        try {
            if (toAdmin.getMessage().getHeader().getString(35).equals("A")) {


                toAdmin.getMessage().setString(554, "*******");
                toAdmin.getMessage().setString(141, "Y");

            } 

        } catch (Exception e) {
            e.printStackTrace();
        }

       log.info("toAdmin: SessionId={}", toAdmin.getSessionId());

    }


    @EventListener
    public void handleFromAdmin(FromAdmin fromAdmin) {
        log.info("fromAdmin: Message={}, SessionId={}", fromAdmin.getMessage(), fromAdmin.getSessionId());
    }

    @EventListener
    public void handleToApp(ToApp toApp) {
        log.info("toApp: SessionId={}", toApp.getSessionId());
    }

    @EventListener
public void handleFromApp(FromApp fromApp) {
    log.info("fromApp: Message={}, SessionId={}", fromApp.getMessage(), fromApp.getSessionId());

    try {
                if (fromApp.getMessage().getHeader().getString(35).equals("8")) {
                log.info("It looks we handle ExecutionReport");
//programm doesn't come to this thread =(
            } else {
                log.info("It is not a ExecutionReport message");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
创建会话和登录时,它会向控制台
ToAdmin
FromAdmin
toApp
fromApp
消息写入消息,但它无法处理
NewOrderSingle
消息的响应


你能帮我处理执行报告(35=8)吗?

执行报告应该记录在
fromApp
中,不是吗?那么,你就不能检查一下app.getMessage().getHeader().getString(35.equals(“8”),然后继续往下看吗?@ChristophJohn,谢谢你的回复。我将
if
添加到
handleFromApp
方法中,但是程序没有进入
true
线程。但是如果消息不是
ExecutionReport
,它将出现在
else
中。您可以从
handleFromApp
方法添加一些日志输出吗?日志信息(“fromApp:Message=…”的输出是什么语句?是否确实收到了执行报告?可能是因为此消息未通过验证,因此未转发到fromApp。您是否可以检查所有日志文件是否存在错误?或者您的toAdmin是否包含拒绝?MsgType 35=3执行报告应记录在fromApp的
中,不是吗?您也不能这样做吗你只需从app.getMessage().getHeader().getString(35.equals)(“8”)中进行检查
然后从那里继续?@ChristophJohn,谢谢你的回复。我将
if
添加到
handleFromApp
方法中,但是程序没有
true
线程。但是如果消息不是
ExecutionReport
,它将进入
else
。你能从
handleFromApp
方法添加一些日志输出吗?什么是
log.info(“fromApp:Message=…”
语句的输出吗?是否确实收到了执行报告?可能是此消息未通过验证,因此未转发到fromApp。是否可以检查所有日志文件是否有错误?或者您的toAdmin是否包含拒绝?MsgType 35=3
@Slf4j
@Component
public class ApplicationListener {


    @EventListener
    public void handleCreate(Create create) {
        log.info("onCreate: SessionId={}", create.getSessionId());
    }


    @EventListener
    public void handleLogon(Logon logon) {

        log.info("onLogon: SessionId={}", logon.getSessionId());
    }

    @EventListener
    public void handleLogout(Logout logout) {
        log.info("onLogout: SessionId={}", logout.getSessionId());
    }

    @EventListener
    public void handleToAdmin(ToAdmin toAdmin) {

        try {
            if (toAdmin.getMessage().getHeader().getString(35).equals("A")) {


                toAdmin.getMessage().setString(554, "*******");
                toAdmin.getMessage().setString(141, "Y");

            } 

        } catch (Exception e) {
            e.printStackTrace();
        }

       log.info("toAdmin: SessionId={}", toAdmin.getSessionId());

    }


    @EventListener
    public void handleFromAdmin(FromAdmin fromAdmin) {
        log.info("fromAdmin: Message={}, SessionId={}", fromAdmin.getMessage(), fromAdmin.getSessionId());
    }

    @EventListener
    public void handleToApp(ToApp toApp) {
        log.info("toApp: SessionId={}", toApp.getSessionId());
    }

    @EventListener
public void handleFromApp(FromApp fromApp) {
    log.info("fromApp: Message={}, SessionId={}", fromApp.getMessage(), fromApp.getSessionId());

    try {
                if (fromApp.getMessage().getHeader().getString(35).equals("8")) {
                log.info("It looks we handle ExecutionReport");
//programm doesn't come to this thread =(
            } else {
                log.info("It is not a ExecutionReport message");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}