public Task Consume(ConsumeContext <IMassTransitCommand> context) { var command = context.Message; if (HostActorRef.ActorIsReady) { HostActorRef.ActorRef.Tell(command); } else { HostActorRef.CacheDto(command); } return(Task.CompletedTask); }
public void ConfigureServices(IServiceCollection services) { services.AddMassTransit(x => { x.AddConsumer <CommandConsumer>(); x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg => { var host = cfg.Host(new Uri("rabbitmq://localhost:/"), h => { h.Username("guest"); h.Password("guest"); }); cfg.ReceiveEndpoint(host, "hostel_queue", e => { e.PrefetchCount = 500; e.UseRetry(r => r.Immediate(5)); e.Consumer <CommandConsumer>(provider); }); })); }); services.AddSingleton <IPublishEndpoint>(provider => provider.GetRequiredService <IBusControl>()); services.AddSingleton <ISendEndpointProvider>(provider => provider.GetRequiredService <IBusControl>()); services.AddSingleton <IBus>(provider => provider.GetRequiredService <IBusControl>()); /* Register the ActorSystem*/ services.AddSingleton(provider => { var serviceScopeFactory = provider.GetService <IServiceScopeFactory>(); var actorSystem = ActorSystem.Create("HostelActorSystem", ConfigurationLoader.Load("host.hocon")); actorSystem.AddServiceScopeFactory(serviceScopeFactory); return(actorSystem); }); services.AddSingleton(provider => { //var cons = Construct(); var actorSystem = provider.GetService <ActorSystem>(); var hostelManagerActor = actorSystem.ActorOf(HostelManagerActor.Prop(new HostelManagerHandler(), new HostelManagerState(false), "HostelManager", Configuration.GetConnectionString("Database")), "HostelManager"); HostActorRef.ActorRef = hostelManagerActor; //HostActorRef.ActorRef.Tell(cons); HostActorRef.ActorIsReady = true; HostActorRef.ProcessCached(); return(hostelManagerActor); }); services.AddSingleton <IHostedService, HostelService>(); }