Apache Ignite RemoteListen .Net
Apache Ignite RemoteListen .Net
我通过BAT文件启动了一个Server,然后通过代码启动了一个Client写入数据,并设置了过期时间。然后我想通过订阅 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;
}
}
我通过BAT文件启动了一个Server,然后通过代码启动了一个Client写入数据,并设置了过期时间。然后我想通过订阅 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;
}
}