如何使用点燃消息传递使用Aapche Ignite终止Springboot应用程序?

时间:2017-11-07 07:38:01

标签: spring-boot ignite

我的apache点燃应用程序是用springboot构建的。 这是我的申请流程。

  1. SenderNode向远程节点(ReceiverNode)发送一些消息
  2. ReceiverNode执行某些操作并将终止符号(只是字符串'已终止')发送到SenderNode
  3. 如果回复消息是终止签名,我想终止SenderNode。
  4. 以下是我的代码。

            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上下文后,点燃节点不会终止。

    有没有办法做到这一点?日Thnx。

1 个答案:

答案 0 :(得分:1)

您应关闭Ignite实例以停止其工作。 但是我认为,如果你试图从消息监听器关闭Ignite,你将会陷入僵局。

尝试从单独的线程中执行此操作。将以下代码放入侦听器:

new Thread(ignite::close).start()

如果Ignite是Spring上下文的一部分,那么关闭上下文就足够了:

new Thread(context::close).start()