/// <summary> /// Register Node by NodeId /// </summary> /// <param name="context">context</param> /// <param name="request">request</param> /// <returns>response</returns> public async Task <RouteRegistrationResponse> Register(IWorkContext context, RouteRegistrationRequest request) { request.Verify(nameof(request)).IsNotNull(); request.NodeId.Verify(nameof(request.NodeId)).IsNotNull(); Uri uri = new ResourcePathBuilder() .SetScheme(ResourceScheme.Queue) .SetServiceBusName("Default") .SetEntityName(request.NodeId !) .Build(); INodeRegistrationActor registgrationActor = await _actorManager.CreateProxy <INodeRegistrationActor>(request.NodeId !); await registgrationActor.Set(context, request.ConvertTo(uri)); QueueDefinition queueDefinition = new QueueDefinition { QueueName = request.NodeId, }; IQueueManagementActor queueActor = await _actorManager.CreateProxy <IQueueManagementActor>(request.NodeId !); await queueActor.Set(context, queueDefinition); return(new RouteRegistrationResponse { InputQueueUri = uri.ToString(), }); }
/// <summary> /// Unregistered route /// </summary> /// <param name="context">context</param> /// <param name="nodeId">node id</param> /// <returns>task</returns> public async Task Unregister(IWorkContext context, RouteRegistrationRequest routeRegistrationRequest) { routeRegistrationRequest.Verify(nameof(routeRegistrationRequest)).IsNotNull(); routeRegistrationRequest.NodeId.Verify(nameof(routeRegistrationRequest.NodeId)).IsNotNull(); Uri uri = new ResourcePathBuilder() .SetScheme(ResourceScheme.Queue) .SetServiceBusName("Default") .SetEntityName(routeRegistrationRequest.NodeId !) .Build(); INodeRegistrationActor subject = await _actorManager.CreateProxy <INodeRegistrationActor>(routeRegistrationRequest.NodeId !); await subject.Remove(context); IQueueManagementActor queueActor = await _actorManager.CreateProxy <IQueueManagementActor>(routeRegistrationRequest.NodeId !); await queueActor.Remove(context); }