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 data subscription changes?

All subscription changes can be tracked by using forAllDataSubscriptions and forDataSubscription methods.

Syntax

ForAllDataSubscriptions

IObservable<DataSubscriptionChangeNotification> forAllDataSubscriptions();
Return value
IObservable<DataSubscriptionChangeNotification> Observable that allows to add subscriptions to notifications for all data subscription changes.

ForDataSubscription

IObservable<DataSubscriptionChangeNotification> forDataSubscription(long id);
Parameters
id long Id of a data subscription for which notifications will be processed.
Return value
IObservable<DataSubscriptionChangeNotification> Observable that allows to add subscriptions to notifications for a specified data subscription changes.

Example I

CleanCloseable subscription = store.
        changes()
        .forAllDataSubscriptions()
        .subscribe(Observers.create(new Action1<DataSubscriptionChangeNotification>() {
            @Override
            public void apply(DataSubscriptionChangeNotification change) {
                long subscriptionId = change.getId();

                switch (change.getType()) {
                    case SUBSCRIPTION_OPENED:
                        // do something
                        break;
                    case SUBSCRIPTION_RELEASED:
                        // do something
                        break;
                }
            }
        }));

Example II

int subscriptionId = 3;

CleanCloseable subscription2 = store.
        changes()
        .forDataSubscription(3)
        .subscribe(Observers.create(new Action1<DataSubscriptionChangeNotification>() {
            @Override
            public void apply(DataSubscriptionChangeNotification change) {
                long subscriptionId = change.getId();

                switch (change.getType()) {
                    case SUBSCRIPTION_OPENED:
                        // do something
                        break;
                    case SUBSCRIPTION_RELEASED:
                        // do something
                        break;
                }
            }
        }));