使用 NCache运行时数据共享的消息传递

如今,许多应用程序需要在运行时异步地相互共享数据。而且,关系数据库不提供有效的事件通知机制,其性能和可扩展性是一个主要问题。

消息队列提供有序消息并保证消息传递,但它们也存在性能和可扩展性问题。

最好的方法是使用消息总线风格的消息传递平台,该平台快速且可扩展,并且还提供生产者/消费者风格的数据共享协调。 NCache 是一个极其快速且可扩展的分布式缓存,并且还提供简单而强大的消息总线风格的消息传递能力。

NCache 消息传递,您可以执行以下操作:

  1. 缓存级别事件: NCache 可以通知客户端添加、插入和删除缓存中的任何项目,或者如果缓存被清除,如果客户端已注册有兴趣接收此类事件。
  2. 项目级别事件: NCache 可以在特定项目更新时通知客户,如果客户对它感兴趣,可以将其删除。
  3. 连续查询事件: NCache 可以根据类似 SQL 的标准监视缓存中的数据集,然后通知客户端从该数据集中添加、更新和删除项目给已注册感兴趣的客户端。
  4. 应用程序启动的自定义事件: 应用程序可以触发自定义事件 NCache 消息总线,以便可以通知对它们感兴趣的其他应用程序。
NCache 运行时数据共享的消息传递

连接到的所有应用程序(无论是 .NET 还是 Java) NCache 可以将其用作消息传递平台,并通过它将事件传播到其他应用程序。 或者,他们可以要求缓存在缓存中发生某些事情时通知他们。

缓存级别事件

每当添加、更新或删除任何内容或从缓存中清除缓存时,都会触发缓存级别事件。 默认情况下,这些事件是关闭的,因为它们会变得很健谈。 但是,您可以在缓存配置中启用部分或全部它们,然后让您的应用程序提供回调函数以 NCache so NCache 当这些事件发生时调用这些回调。 以下是您可以注册的回调类型。


  CacheEventListener listener = new CacheEventListener();
  EnumSet<EventType> _eventType = EnumSet.noneOf(EventType.class);
  
  _eventType.add(EventType.ItemAdded);
  _eventType.add(EventType.ItemUpdated);
  _eventType.add(EventType.ItemRemoved);
	
  CacheEventDescriptor descripter = _cache.addCacheDataModificationListener(listener,
                                    _eventType, EventDataFilter.None);
                                  

项目级别事件

这些事件在特定项目更新或删除时触发,但前提是一个或多个客户端已为它们注册回调。 以下是您可以注册的事件和回调。


  CacheEventListener listener = new CacheEventListener();
  EnumSet<EventType> _eventType = EnumSet.noneOf(EventType.class);

  _eventType.add(EventType.ItemUpdated);
  _eventType.add(EventType.ItemRemoved);

  _cache.addCacheDataModificationListener ("Key:1", listener,
                                           _eventType, EventDataFilter.None);

连续查询

连续查询是一个强大的功能 NCache 这允许您向缓存注册类似 SQL 的查询,并指定您希望回调被哪些事件调用 NCache.

NCache 然后在缓存集群中创建一个 Continuous Query 并监控所有的 add、update 和 remove 操作,看看它们是否修改了符合这个 Continuous Query 条件的缓存项。 如果是这样,那么 NCache 通知您的客户端应用程序。

以下是您可以注册的活动。


  ContinuousQuery cQuery1 = new ContinuousQuery(qry, indexTable);
  ContinuousQueryListener cqListener = new ContinuousQueryListener();
  EnumSet _eventType = EnumSet.noneOf(EventType.class);

  _eventType.add(EventType.ItemAdded);
  _eventType.add(EventType.ItemUpdated);
  _eventType.add(EventType.ItemRemoved);

  cQuery1.addDataModificationListener(cqListener, _eventType,
                                      EventDataFilter.DataWithMetaData);
 

应用程序启动的自定义事件

NCache 允许您的应用程序在生产者/消费者或发布/订阅场景中与其他应用程序协调。 一个应用程序生成数据,然后将自定义事件触发到 NCache 消息传递和一个或多个应用程序正在等待接收此事件。

以下是您的应用程序如何注册以接收这些自定义事件。


  public void OnApplicationEvent(object notifId, object data)
	{
	  ...
	} 
  _cache.CustomEvent += new CustomEventCallback(this.OnApplicationEvent);
  

而且,这就是您的应用程序如何将这个自定义事件触发到 NCache 消息。


  _cache.RaiseCustomEvent("NotificationID", DateTime.Now);
 

接下来做什么?

联系我们

联系电话
©版权所有 Alachisoft 2002 - 版权所有。 NCache 是 Diyatech Corp. 的注册商标。