Exemplo n.º 1
0
        /// <summary>
        /// Creates a new <see cref="DistributionStrategy"/>.
        /// </summary>
        /// <param name="endpoint">The name of the endpoint this distribution strategy resolves instances for.</param>
        /// <param name="scope">The scope for this strategy.</param>
        protected DistributionStrategy(string endpoint, DistributionStrategyScope scope)
        {
            Guard.AgainstNullAndEmpty(nameof(endpoint), endpoint);

            Endpoint = endpoint;
            Scope    = scope;
        }
        /// <summary>
        /// Creates a new <see cref="DistributionStrategy"/>.
        /// </summary>
        /// <param name="endpoint">The name of the endpoint this distribution strategy resolves instances for.</param>
        /// <param name="scope">The scope for this strategy.</param>
        protected DistributionStrategy(string endpoint, DistributionStrategyScope scope)
        {
            Guard.AgainstNullAndEmpty(nameof(endpoint), endpoint);

            Endpoint = endpoint;
            Scope = scope;
        }
Exemplo n.º 3
0
 public FairDistributionStrategy(ReadOnlySettings settings, string endpoint, DistributionStrategyScope scope)
     : base(endpoint, scope)
 {
     this.settings = settings;
     flowManager   = settings.Get <FlowManager>();
 }
Exemplo n.º 4
0
 /// <summary>
 /// Creates a new <see cref="SingleInstanceRoundRobinDistributionStrategy"/> instance.
 /// </summary>
 /// <param name="endpoint">The name of the endpoint this distribution strategy resolves instances for.</param>
 /// <param name="scope">The scope for this strategy.</param>
 public SingleInstanceRoundRobinDistributionStrategy(string endpoint, DistributionStrategyScope scope)
     : base(endpoint, scope)
 {
 }
 internal RawDistributionStrategy GetDistributionStrategy(string endpointName, DistributionStrategyScope scope)
 {
     return(configuredStrategies.GetOrAdd(Tuple.Create(endpointName, scope), key => new SingleInstanceRoundRobinRawDistributionStrategy(key.Item1, key.Item2)));
 }
 public SpecificInstanceDistributionStrategy(EndpointInstance instance, Func <EndpointInstance, string> transportAddressTranslation, DistributionStrategyScope scope) : base(instance.Endpoint, scope)
 {
     this.instance = instance;
     this.transportAddressTranslation = transportAddressTranslation;
 }
 public DistributionStrategy GetDistributionStrategy(string endpointName, DistributionStrategyScope scope)
 {
     return(new SpecificInstanceDistributionStrategy(
                new EndpointInstance(endpointName, discriminator),
                transportAddressTranslation, scope));
 }
 public DistributionStrategy GetDistributionStrategy(string endpointName, DistributionStrategyScope scope)
 {
     return new SpecificInstanceDistributionStrategy(
         new EndpointInstance(endpointName, discriminator),
         transportAddressTranslation, scope);
 }
 public PartitionAwareDistributionStrategy(string endpoint, Func <object, string> mapper, DistributionStrategyScope scope) : base(endpoint, scope)
 {
     this.mapper = mapper;
 }
    public IEnumerable <RoutingStrategy> Route(Type messageType, IOutgoingContext context, OutgoingLogicalMessage outgoingMessage, DistributionStrategyScope distributionStrategyScope)
    {
        var routes = routeGenerator.GetRoutesFor(messageType);

        var matchingRoutes = routes.Where(r => r.Match(GetDestinationSites(context)));

        foreach (var destination in matchingRoutes)
        {
            var candidates           = ResolveRoute(destination).ToArray();
            var distributionContext  = new DistributionContext(candidates, outgoingMessage, context.MessageId, context.Headers, resolveTransportAddress, context.Extensions);
            var distributionStrategy = distributionPolicy.GetDistributionStrategy(destination.ImmediateDestination, distributionStrategyScope);
            var selected             = distributionStrategy.SelectDestination(distributionContext);

            var routingStrategy = new MapBasedRoutingStrategy(selected, destination.NextHop);
            yield return(routingStrategy);
        }
    }
 /// <summary>
 /// Creates a new <see cref="RawDistributionStrategy"/>.
 /// </summary>
 /// <param name="endpoint">The name of the endpoint this distribution strategy resolves instances for.</param>
 /// <param name="scope">The scope for this strategy.</param>
 protected RawDistributionStrategy(string endpoint, DistributionStrategyScope scope)
 {
     Endpoint = endpoint ?? throw new ArgumentNullException(nameof(endpoint));
     Scope    = scope;
 }
 public FakeDistributionStrategy(string endpoint, DistributionStrategyScope scope) : base(endpoint, scope)
 {
 }
Exemplo n.º 13
0
 DistributionStrategy IDistributionPolicy.GetDistributionStrategy(string endpointName, DistributionStrategyScope scope)
 {
     return configuredStrategies.GetOrAdd(Tuple.Create(endpointName, scope), key => new SingleInstanceRoundRobinDistributionStrategy(key.Item1, key.Item2));
 }
 public SpecificInstanceDistributionStrategy(EndpointInstance instance, Func<EndpointInstance, string> transportAddressTranslation, DistributionStrategyScope scope) : base(instance.Endpoint, scope)
 {
     this.instance = instance;
     this.transportAddressTranslation = transportAddressTranslation;
 }
 public RandomStrategy(string endpoint, DistributionStrategyScope scope) : base(endpoint, scope)
 {
 }
Exemplo n.º 16
0
 public FairDistributionStrategy(ReadOnlySettings settings, string endpoint, DistributionStrategyScope scope)
     : base(endpoint, scope)
 {
     this.settings = settings;
 }
Exemplo n.º 17
0
 public MyDistributionStrategy(string endpoint, DistributionStrategyScope scope, StatelessServiceContext context) : base(endpoint, scope)
 {
     _context = context;
 }
 /// <summary>
 /// Creates a new <see cref="SingleInstanceRoundRobinDistributionStrategy"/> instance.
 /// </summary>
 /// <param name="endpoint">The name of the endpoint this distribution strategy resolves instances for.</param>
 /// <param name="scope">The scope for this strategy.</param>
 public SingleInstanceRoundRobinDistributionStrategy(string endpoint, DistributionStrategyScope scope)
     : base(endpoint, scope)
 {
 }
Exemplo n.º 19
0
 /// <summary>
 /// Creates new instance.
 /// </summary>
 public AnycastContext(string destinationEndpoint, OutgoingMessage message, DistributionStrategyScope distributionScope, RuleContext parentContext) : base(parentContext)
 {
     DestinationEndpoint = destinationEndpoint;
     Message             = message;
     DistributionScope   = distributionScope;
 }