コード例 #1
0
    protected override void Setup(FeatureConfigurationContext context)
    {
        var settings = context.Settings;
        var forwardingAddressDirectory = settings.Get <ForwardingAddressDirectory>();
        var transportInfrastructure    = settings.Get <TransportInfrastructure>();

        var routeResolver = new UnicastRouteResolver(
            i => transportInfrastructure.ToTransportAddress(LogicalAddress.CreateRemoteAddress(i)),
            settings.Get <EndpointInstances>(),
            settings.Get <DistributionPolicy>()
            );

        var rerouteBehavior = new RerouteMessagesWithForwardingAddress(
            forwardingAddressDirectory.ToLookup(),
            routeResolver
            );

        var invokeForwardingPipeline = new ForwardMessagesWithForwardingAddress();

        var pipeline = context.Pipeline;

        pipeline.Register(rerouteBehavior, "Finds forwarding addresses and resolves them");
        pipeline.Register(invokeForwardingPipeline, "Forwards messages to their matching forwarding addresses");
    }
 public RerouteMessagesWithForwardingAddress(ILookup <Type, UnicastRoute> forwardingRoutesLookup, UnicastRouteResolver routeResolver)
 {
     this.forwardingRoutesLookup = forwardingRoutesLookup;
     this.routeResolver          = routeResolver;
 }