问题描述
我通过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;
}
}