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

IChangesObservable<IndexChange> forIndex(String indexName);

Parameters
indexName String Name of an index for which notifications will be processed.
Return value
IChangesObservable<IndexChange> Observable that allows to add subscriptions to notifications for index with given name.

Example

CleanCloseable subscription = store
    .changes()
    .forIndex("Orders/All")
    .subscribe(Observers.create(change -> {
        switch (change.getType()) {
            case NONE:
                // do something
                break;
            case BATCH_COMPLETED:
                // do something
                break;
            case INDEX_ADDED:
                // do something
                break;
            case INDEX_REMOVED:
                // do something
                break;
            case INDEX_DEMOTED_TO_IDLE:
                // do something
                break;
            case INDEX_PROMOTED_FROM_IDLE:
                // do something
                break;
            case INDEX_DEMOTED_TO_DISABLED:
                // do something
                break;
            case INDEX_MARKED_AS_ERRORED:
                // do something
                break;
            case SIDE_BY_SIDE_REPLACE:
                // do something
                break;
            case RENAMED:
                // do something
                break;
            case INDEX_PAUSED:
                // do something
                break;
            case LOCK_MODE_CHANGED:
                // do something
                break;
            case PRIORITY_CHANGED:
                // do something
                break;
            default:
                throw new IllegalArgumentException();
        }
    }));

forAllIndexes

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

Return value
IChangesObservable<IndexChange> Observable that allows to add subscriptions to notifications for all indexes.

Syntax

IChangesObservable<IndexChange> forAllIndexes();

Example

CleanCloseable subscription = store
    .changes()
    .forAllIndexes()
    .subscribe(Observers.create(change -> {
        System.out.println(change.getType() + " on index " + change.getName());
    }));

IndexChange

Properties

Name Type Description
Type IndexChangeTypes Change type
Name String Index name
Etag Long Index Etag

IndexChangeTypes

Name
NONE
BATCH_COMPLETED
INDEX_ADDED
INDEX_REMOVED
INDEX_DEMOTED_TO_IDLE
INDEX_PROMOTED_TO_IDLE
INDEX_DEMOTED_TO_DISABLED
INDEX_MARKED_AS_ERRORED
SIDE_BY_SIDE_REPLACE
RENAMED
INDEX_PAUSED
LOCK_MODE_CHANGED
PRIORITY_CHANGED