public Task SubscribeAsync <T>(string topic, Action <T> handlerAction, HandleBy handleBy)
        {
            if (handleBy == HandleBy.AllInstances)
            {
                _consumerConfig.GroupId = $"{_consumerConfig.GroupId}-{Guid.NewGuid()}";
            }

            using var consumer = new ConsumerBuilder <Ignore, T>(_consumerConfig).Build();

            consumer.Subscribe(topic);

            Console.WriteLine($"Consumer subscribed on {topic} topic and waiting for messages");

            while (true)
            {
                try
                {
                    var consumeResult = consumer.Consume();

                    if (consumeResult != null)
                    {
                        handlerAction(consumeResult.Message.Value);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    break;
                }
            }

            consumer.Close();
            return(Task.CompletedTask);
        }
Exemple #2
0
        private void BindingProcedureAndUserGroup()
        {
            //Node submit = myWorkflowGraph.GetNodeByName("Submit");
            //Node cseGroup = myWorkflowGraph.GetNodeByName("CSE");
            //Edge newEdge = new HandleBy();
            //myWorkflowGraph.AddEdge(submit, cseGroup, newEdge);
            //newEdge = new Incharge();
            //myWorkflowGraph.AddEdge(cseGroup, submit, newEdge);

            Node ticketCheck = myWorkflowGraph.GetNodeByName(ProcedureStepEunm.TicketCheck.ToString());
            Node interGroup  = myWorkflowGraph.GetNodeByName("Interface");
            Edge newEdge     = new HandleBy();

            myWorkflowGraph.AddEdge(ticketCheck, interGroup, newEdge);
            newEdge = new Incharge();
            myWorkflowGraph.AddEdge(interGroup, ticketCheck, newEdge);


            Node preAnalysis = myWorkflowGraph.GetNodeByName(ProcedureStepEunm.PreAnalysis.ToString());
            Node uiGroup     = myWorkflowGraph.GetNodeByName("UI");

            newEdge = new HandleBy();
            myWorkflowGraph.AddEdge(preAnalysis, uiGroup, newEdge);
            newEdge = new Incharge();
            myWorkflowGraph.AddEdge(uiGroup, preAnalysis, newEdge);

            Node examGroup = myWorkflowGraph.GetNodeByName("Exam");

            newEdge = new HandleBy();
            myWorkflowGraph.AddEdge(preAnalysis, examGroup, newEdge);
            newEdge = new Incharge();
            myWorkflowGraph.AddEdge(examGroup, preAnalysis, newEdge);

            Node imageGroup = myWorkflowGraph.GetNodeByName("Imaging");

            newEdge = new HandleBy();
            myWorkflowGraph.AddEdge(preAnalysis, imageGroup, newEdge);
            newEdge = new Incharge();
            myWorkflowGraph.AddEdge(imageGroup, preAnalysis, newEdge);

            Node regression = myWorkflowGraph.GetNodeByName(ProcedureStepEunm.Regression.ToString());
            Node testGroup  = myWorkflowGraph.GetNodeByName("Test Center");

            newEdge = new HandleBy();
            myWorkflowGraph.AddEdge(regression, testGroup, newEdge);
            newEdge = new Incharge();
            myWorkflowGraph.AddEdge(testGroup, regression, newEdge);

            Node feedback = myWorkflowGraph.GetNodeByName(ProcedureStepEunm.Feedback.ToString());
            Node cseGroup = myWorkflowGraph.GetNodeByName("CSE");

            newEdge = new HandleBy();
            myWorkflowGraph.AddEdge(feedback, cseGroup, newEdge);
            newEdge = new Incharge();
            myWorkflowGraph.AddEdge(cseGroup, feedback, newEdge);
        }