private async Task ProcessOrdersAsync(Order nextOrder) { foreach (OrderedDrink drink in nextOrder.Drinks) { if (drink == null) { OnWaiteringActivity?.Invoke(this, new WaiteringActivityEventArgs($"{_name}: Well I can't do much with this.")); } else { var servedDrink = new ServedDrink { PaidBy = nextOrder.OrderedBy, DrinkName = drink.DrinkName }; OnWaiteringActivity?.Invoke(this, new WaiteringActivityEventArgs($"{_name} Preparing {drink.DrinkName} for {drink.OrderedFor}.")); await Task.Delay(1000); int poisonedBeerRatio = Randomizer.Next(0, 100); if (poisonedBeerRatio > 80) { servedDrink.DrinkName = $"Spoiled {drink.DrinkName}"; OnWaiteringActivity?.Invoke(this, new WaiteringActivityEventArgs($"{_name}: Created a SPOILED {drink.DrinkName} without knowing it!")); } await Proxy.ServeDrinkAsync(drink.OrderedFor, servedDrink); OnWaiteringActivity?.Invoke(this, new WaiteringActivityEventArgs($"{_name}: Alright another soul served!")); } } }
public async Task ServeDrinkAsync(string orderedFor, ServedDrink drink) { var client = new TopicClient(BarTopicCnBuilder); byte[] body = JsonSerializer.SerializeToUtf8Bytes(drink); var message = new Message(body); message.UserProperties.Add("OrderedFor", orderedFor); await client.SendAsync(message); }