Example: Receive notifications when a client subscribes to a routing topic
The following examples use the SubscriptionControl feature in the Diffusion™ API to listen for notifications of when a client subscribes to a routing topic.
Java and Android
package com.pushtechnology.diffusion.examples; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.pushtechnology.diffusion.client.Diffusion; import com.pushtechnology.diffusion.client.features.control.topics.SubscriptionControl; import com.pushtechnology.diffusion.client.features.control.topics.SubscriptionControl.RoutingSubscriptionRequest; import com.pushtechnology.diffusion.client.features.control.topics.SubscriptionControl.RoutingSubscriptionRequest.RoutingHandler; import com.pushtechnology.diffusion.client.session.Session; /** * This demonstrates using a control client to be notified of subscription * requests to routing topics. * <P> * This uses the 'SubscriptionControl' feature. * * @author Push Technology Limited * @since 5.0 */ public class ControlClientSubscriptionControlRouting { private static final Logger LOG = LoggerFactory.getLogger(ControlClientSubscriptionControlRouting.class); private final Session session; /** * Constructor. */ public ControlClientSubscriptionControlRouting(String serverUrl) { session = Diffusion.sessions().principal("control").password("password") .open(serverUrl); final SubscriptionControl subscriptionControl = session.feature(SubscriptionControl.class); // Sets up a handler so that all subscriptions to topic a/b are routed // to routing/target/topic // To do this, the client session requires the 'view_session', // 'modify_session', and 'register_handler' permissions. subscriptionControl.addRoutingSubscriptionHandler( "a/b", new RoutingHandler.Default() { @Override public void onSubscriptionRequest( final RoutingSubscriptionRequest request) { request.route("routing/target/topic").whenComplete((voidResult, exception) -> { if (exception != null) { LOG.info("subscription routing failed", exception); } }); } }); } /** * Close the session. */ public void close() { session.close(); } }
.NET
Change the URL from that provided in the example to the URL of Diffusion Cloud. Diffusion Cloud service URLs end in diffusion.cloud
This page last modified: 2020/06/25