예제 #1
0
        public static void Handler(KafkaRetry <Input> input)
        {
            var refType    = input.RefType;
            var retryCount = input.RetryCount;

            switch (refType)
            {
            case RefType.Retry1:
            {
                if (retryCount > 0)
                {
                    if (DateTime.Now >= input.RetryOn)
                    {
                        System.Console.WriteLine($"Got message from Retry Kafka: {input.Request.Message}");
                        var extraData = JsonConvert.DeserializeObject <Retry1Extra>(input.ExtraData);
                        System.Console.WriteLine(
                            $"Got extra data from Retry Kafka. Extra1:{extraData.Extra1}, Extra2:{extraData.Extra2}");
                    }
                    else
                    {
                        System.Console.WriteLine($"Resend to Queue {DateTime.Now}");
                        Producer.SendMessage(input);
                    }
                }
                break;
            }

            case RefType.Retry2:
            {
                // TODO Implement type 2
                break;
            }
            }
        }
예제 #2
0
        public static void Handler(Input input)
        {
            System.Console.WriteLine($"Got message from Kafka: {input.Message}");

            if (input.Message == "Retry")
            {
                var extraData = new Retry1Extra {
                    Extra1 = "Extra1", Extra2 = "Extra2"
                };
                var message = new KafkaRetry <Input>
                {
                    RetryOn    = DateTime.Now.AddSeconds(10),
                    RetryCount = 1,
                    Request    = input,
                    RefType    = RefType.Retry1,
                    ExtraData  = JsonConvert.SerializeObject(extraData)
                };

                Producer.SendMessage(message);
            }
        }