private void ScheduleAvailabilityQuote(ScheduleAvailabilityQuote scheduleAvailabilityQuote) { logger.Info("Schedule availability quote (ProductId: {0}, Quantity {1})", scheduleAvailabilityQuote.ProductId, scheduleAvailabilityQuote.Quantity); foreach (string partnerId in scheduleAvailabilityQuote.PartnerIds) { string name = $"availability-quote-agent-{ partnerId }"; IActorRef availabilityQuoteAgentActor = Context.Child(name); if (availabilityQuoteAgentActor.IsNobody()) { availabilityQuoteAgentActor = Context.ActorOf(Props.Create <AvailabilityQuoteAgentActor>(partnerId), name); } var requestAvailabilityQuote = new RequestAvailabilityQuote(scheduleAvailabilityQuote.ProductId, scheduleAvailabilityQuote.Quantity); Deliver(availabilityQuoteAgentActor.Path, deliveryId => new DeliverAtLeastOnce <RequestAvailabilityQuote>(deliveryId, requestAvailabilityQuote)); SaveSnapshot(GetDeliverySnapshot()); } var availabilityQuoteScheduled = new AvailabilityQuoteScheduled(); Sender.Tell(availabilityQuoteScheduled); }
public void AvailabilityQuoteShouldBeScheduled() { IActorRef availabilityQuoteSchedulerActor = Sys.ActorOf <AvailabilityQuoteSchedulerActor>("availability-quote-scheduler"); var scheduleAvailabilityQuote = new ScheduleAvailabilityQuote(new HashSet <string>() { "1", "2", "3", "4", "5" }, "1", 1); availabilityQuoteSchedulerActor.Tell(scheduleAvailabilityQuote); AvailabilityQuoteScheduled availabilityQuoteScheduled = ExpectMsg <AvailabilityQuoteScheduled>(TimeSpan.FromMinutes(10)); }