Exemplo n.º 1
0
        private async Task Async()
        {
            _lastLogger.Debug("Start monitor task").Write();

            do
            {
                await Task.Delay(TimeSpan.FromSeconds(1));

                var lastMsgTimeDelta = DateTime.Now - _lastMsgTime;

                if (lastMsgTimeDelta >= BatchTimeout && _messages.Count != 0)
                {
                    ApplyContext(
                        _lastLogger.Debug("Hit mq batch processing"),
                        lastMsgTimeDelta
                        )
                    .Write();

                    try
                    {
                        await PerformConsumingAsync();
                    }
                    catch (Exception e)
                    {
                        ApplyContext(
                            _lastLogger.Error("Mq batch processing error", e),
                            lastMsgTimeDelta
                            )
                        .Write();
                    }
                }
                else
                {
                    ApplyContext(
                        _lastLogger.Debug("Pass mq batch processing"),
                        lastMsgTimeDelta
                        )
                    .Write();
                }
            } while (true);

            DslExpression ApplyContext(DslExpression dslExpression, TimeSpan lastMsgTimeDelta)
            {
                return(dslExpression
                       .AndLabel("async-mq-batch-processing")
                       .AndFactIs("last-msg-time", _lastMsgTime.ToString("T"))
                       .AndFactIs("last-msg-delta", lastMsgTimeDelta.ToString("T"))
                       .AndFactIs("queue", Queue)
                       .AndFactIs("msg-count", _messages.Count));
            }
        }
Exemplo n.º 2
0
 public DslExpression Debug(string message)
 {
     return(ApplyExtensions(_dsl.Debug(message)));
 }