Asynchronous IgniteMessaging在同步模式下工作

Asynchronous IgniteMessaging在同步模式下工作,asynchronous,synchronization,messaging,ignite,Asynchronous,Synchronization,Messaging,Ignite,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.

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");
}
ignite.message().localListen(“测试”,(nodeId,Msg)->{
试一试{
睡眠(500);
}捕获(例外情况除外){
}
返回true;
});
对于(int i=0;i<100;i++){
message().send(“TEST”,“Hello World”);
}
发送100条信息大约需要50秒,这几乎等于500毫秒*100的睡眠时间。似乎同步模式下的发送函数不在异步模式下

有人知道如何在异步模式下更改send函数吗


提前感谢。

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

  • 除非将添加
    sendaync()
    ,否则请使用已弃用的
    withAsync()
  • 例如,如果总是返回true,则在谓词中传递您自己的执行器

  • 我刚刚开了一张罚单,说明在添加新API时,似乎错过了异步侦听器调用,但您仍然有两个选项:

  • 除非将添加
    sendaync()
    ,否则请使用已弃用的
    withAsync()
  • 例如,如果总是返回true,则在谓词中传递您自己的执行器

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

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

    嗨,Mitya,谢谢您的回答,是的,我们可以使用
    withAsync()
    以异步模式发送消息,但是您知道为什么v2中不推荐使用此函数吗?另一个问题是,函数
    sendOrdered()
    始终处于同步模式,无论我们是否使用
    withAsync()
    withAsync()
    都会混淆API,因为不是所有方法都尊重该标志,所以决定通过添加返回future的
    xxxAsync()
    方法来更改它。因此,在AI 3.0中,旧API将被完全删除。是的,
    sendOrdered()
    没有检查异步标志,可能这个功能以前没有或不需要。那么,您是否计划发布两个API以异步模式发送消息,一个是
    sendAsync()
    ,另一个是
    sendOrderedAsync()
    ,对吗?嗨,Mitya,谢谢您的回答,是的,我们可以使用
    与async()
    以异步模式发送消息,但您知道为什么v2中不推荐使用此函数吗?还有一个问题,函数
    sendOrdered()
    是否始终处于同步模式,无论我们是否使用
    withAsync()
    withAsync()是令人困惑的API,因为并非所有方法都尊重该标志,所以决定通过添加返回future的
    xxxAsync()
    方法对其进行更改。因此在AI 3.0中,旧API将被完全删除。是的,
    sendOrdered()
    没有检查异步标志,可能以前缺少或不需要此功能。因此,您是否计划发布两个用于以异步模式发送消息的API,一个是
    sendAsync()
    ,另一个是
    sendOrderedAsync()
    ,对吗?