You are currently browsing legacy 3.0 version of documentation. Click here to switch to the newest 5.0 version.

We can help you with migration to the latest RavenDB

Contact Us Now
see on GitHub

Changes API: How to subscribe to index changes?

Following methods allow you to subscribe to index changes:

ForIndex

Index changes for one index can be observed using forIndex method.

Syntax

public IObservable<IndexChangeNotification> forIndex(String indexName);
Parameters
indexName String Name of an index for which notifications will be processed.
Return value
IObservable<IndexChangeNotification> Observable that allows to add subscriptions to notifications for index with given name.

Example

Closeable subscription = store.
   changes().
   forIndex("Orders/All")
   .subscribe(Observers.create(new Action1<IndexChangeNotification>() {
    @Override
    public void apply(IndexChangeNotification change) {
      switch (change.getType()) {
        case INDEX_ADDED:
          // do something
          break;
        case INDEX_DEMOTED_TO_ABANDONED:
          // do something
          break;
        case INDEX_DEMOTED_TO_DISABLED:
          // do something
          break;
        case INDEX_DEMOTED_TO_IDLE:
          // do something
          break;
        case INDEX_MARKED_AS_ERRORED:
          // do something
          break;
        case INDEX_PROMOTED_FROM_IDLE:
          // do something
          break;
        case INDEX_REMOVED:
          // do something
          break;
        case MAP_COMPLETED:
          // do something
          break;
        case REDUCE_COMPLETED:
          // do something
          break;
        case REMOVE_FROM_INDEX:
          // do something
          break;
        default:
          break;
      }
    }
  }));

ForAllIndexes

Index changes for all indexes can be observed using forAllIndexes method.

Return value
IObservable<IndexChangeNotification> Observable that allows to add subscriptions to notifications for all indexes.

Syntax

public IObservable<IndexChangeNotification> forAllIndexes();

Example

Closeable subscription = store.
  changes().
  forAllIndexes()
  .subscribe(Observers.create(new Action1<IndexChangeNotification>() {
   @Override
   public void apply(IndexChangeNotification change) {
     System.out.println(change.getType() + " on index " + change.getName());
   }
 }));