コード例 #1
0
        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);
        }
コード例 #2
0
        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));
        }