/// <summary> /// Registers a service as a subscriber for messages of type <paramref name="messageType"/>. /// </summary> /// <param name="service">The service registering itself as a subscriber for messages of type <paramref name="messageType"/></param> /// <param name="messageType">The type of message to register for (each message type has its own <see cref="IBrokerActor"/> instance)</param> /// <param name="listenerName">(optional) The name of the listener that is used to communicate with the service</param> /// <returns></returns> public static Task RegisterMessageTypeAsync(this StatefulServiceBase service, Type messageType, string listenerName = null) { if (service == null) { throw new ArgumentNullException(nameof(service)); } if (messageType == null) { throw new ArgumentNullException(nameof(messageType)); } return(RegisterMessageTypeAsync(service.Context, service.GetServicePartition().PartitionInfo, messageType, listenerName)); }
/// <summary> /// Unregisters a service as a subscriber for messages of type <paramref name="messageType"/>. /// </summary> /// <param name="service">The service unregistering itself as a subscriber for messages of type <paramref name="messageType"/></param> /// <param name="messageType">The type of message to unregister for (each message type has its own <see cref="IBrokerActor"/> instance)</param> /// <param name="flushQueue">Publish any remaining messages.</param> /// <returns></returns> public static Task UnregisterMessageTypeAsync(this StatefulServiceBase service, Type messageType, bool flushQueue) { if (service == null) { throw new ArgumentNullException(nameof(service)); } if (messageType == null) { throw new ArgumentNullException(nameof(messageType)); } return(UnregisterMessageTypeAsync(service.Context, service.GetServicePartition().PartitionInfo, messageType, flushQueue)); }
/// <summary> /// Unregisters a Service as a subscriber for messages of type <paramref name="messageType"/> using a <see cref="IRelayBrokerActor"/> approach. /// </summary> /// <param name="service">The service registering itself as a subscriber for messages of type <paramref name="messageType"/></param> /// <param name="messageType">The type of message to unregister for (each message type has its own <see cref="IBrokerActor"/> instance)</param> /// <param name="relayBrokerActorId">The ID of the relay broker to unregister with.</param> /// <param name="sourceBrokerActorId">(optional) The ID of the source <see cref="IBrokerActor"/> that was used as the source for the <paramref name="relayBrokerActorId"/> /// If not specified, the default <see cref="IBrokerActor"/> for the message type <paramref name="messageType"/> will be used.</param> /// <param name="flushQueue">Publish any remaining messages.</param> /// <returns></returns> public static Task UnregisterMessageTypeWithRelayBrokerAsync(this StatefulServiceBase service, Type messageType, ActorId relayBrokerActorId, ActorId sourceBrokerActorId, bool flushQueue) { if (service == null) { throw new ArgumentNullException(nameof(service)); } if (messageType == null) { throw new ArgumentNullException(nameof(messageType)); } if (relayBrokerActorId == null) { throw new ArgumentNullException(nameof(relayBrokerActorId)); } return(UnregisterMessageTypeWithRelayBrokerAsync(service.Context, service.GetServicePartition().PartitionInfo, messageType, relayBrokerActorId, sourceBrokerActorId, flushQueue)); }