Spring boot 如何使用Ignite消息通过Aapche Ignite终止Springboot应用程序?

Spring boot 如何使用Ignite消息通过Aapche Ignite终止Springboot应用程序?,spring-boot,ignite,Spring Boot,Ignite,我的ApacheIgnite应用程序是用springboot构建的。 这是我的申请流程 SenderNode向远程节点(ReceiverNode)发送一些消息 ReceiverNode执行某些操作并将终止符号(仅字符串“terminated”)发送到SenderNode 如果回复消息是终止符号,我想终止SenderNode 下面是我的代码 ignite.message(ReceiverNode).remoteListen(topic, (nodeId, message) ->

我的ApacheIgnite应用程序是用springboot构建的。 这是我的申请流程

  • SenderNode向远程节点(ReceiverNode)发送一些消息
  • ReceiverNode执行某些操作并将终止符号(仅字符串“terminated”)发送到SenderNode
  • 如果回复消息是终止符号,我想终止SenderNode
  • 下面是我的代码

            ignite.message(ReceiverNode).remoteListen(topic, (nodeId, message) -> {
                doSomething();
    
                ignite.message(ignite.cluster().forNodeId(nodeId)).send(topic, reply);
    
                return false;
            });
    
            ignite.message().localListen(null, (nodeId, message) -> {
                if(message is terminate sign) {
                    context.close(); // springcontext
    
                    return false;
                } else {
                    return true;
                }
            });
    
            ignite.message(ReceiverNode).send(message, args);
    
    但在SenderNode接收到终止符号并关闭spring上下文后,ignite节点并没有终止


    有没有办法做到这一点?thnx.

    您应该关闭Ignite实例以停止其工作。 但是我认为,如果您试图关闭来自消息侦听器的Ignite,您将遇到死锁

    试着从一个单独的线程执行它。将以下代码放入侦听器:

    新线程(ignite::close).start()
    
    如果Ignite是Spring上下文的一部分,那么关闭上下文就足够了:

    新线程(上下文::close).start()