Apache Ignite RemoteListen .Net

问题描述

我通过BAT文件启动了服务器,然后启动了客户端通过代码写入数据,并设置了到期时间。然后,我想通过订阅EVT_CACHE_OBJECT_EXPIRED来跟踪客户端的过期条目,但是我发现https://issues.apache.org/jira/browse/IGNITE-1682-RemoteListen已从Ignite.NET中删除,替代方案是什么?还是有什么例子可以看。

解决方法

您可以在服务器节点上使用LocalListen,然后使用Ignite Messaging将事件通知客户端。

服务器

server.GetEvents().LocalListen(new EventListener(server.GetMessaging()),EventType.CacheObjectExpired);

...

public class EventListener  : IEventListener<CacheEvent>
{
    private readonly IMessaging _messaging;

    public EventListener(IMessaging messaging)
    {
        _messaging = messaging;
    }

    public bool Invoke(CacheEvent evt)
    {
        _messaging.Send(evt.Key,"Expired");

        return true;
    }
}

客户

client.GetMessaging().LocalListen(new MessageListener(),"Expired");

...

public class MessageListener : IMessageListener<object>
{
    public bool Invoke(Guid nodeId,object message)
    {
        Console.WriteLine("Expired: " + message);

        return true;
    }
}