示例#1
0
        /// <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(),
            });
        }
示例#2
0
        /// <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);
        }