IgniteMesssaging在同步模式下工作

时间:2017-06-21 12:01:45

标签: asynchronous synchronization messaging ignite

似乎Ignite(2.0)Messaging的发送功能在同步模式下工作,它将被阻止为监听器。以下是我的测试代码。

ignite.message().localListen("TEST", (nodeId, Msg) -> {
    try {
        Thread.sleep(500);
    } catch (Exception ex) {
    }

    return true;
});



for (int i = 0; i < 100; i++) {
    ignite.message().send("TEST", "Hello World");
}

发送100条消息大约需要50秒,它几乎等于500毫秒* 100的休眠时间。似乎同步模式下的发送功能不处于异步模式。

有人知道如何在异步模式下更改发送功能吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

在添加新API时似乎错过了异步侦听器调用,但您仍有两个选项:

  1. 使用已弃用的withAsync(),除非添加sendAsync()
  2. 例如,如果总是返回true,则将自己的Executor传递给谓词。
  3. 我刚刚为IGNITE-5570

    打开了一张票

答案 1 :(得分:0)

您似乎在一个节点内进行了测试。在这种情况下,没有发送消息,并且同步调用侦听器。网络通信在Ignite中是异步的,因此如果您在两个节点上进行测试,则不应该看到这种行为。