IgniteMesssaging在同步模式下工作



似乎 Ignite(2.0( 消息传递的发送功能在同步模式下工作,它将被监听器阻止。下面是我的测试代码。

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");
}
发送 50 条

消息大约需要 100 秒,几乎等于睡眠时间 500 ms * 100。 似乎同步模式下的发送函数不在异步模式下。

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

提前谢谢。

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

  1. 使用已弃用的withAsync(),除非将添加sendAsync()
  2. 例如,在谓词中传递您自己的执行器,如果您总是返回 true。

我刚刚打开了那个 IGNITE-5570 的票

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

最新更新