示例#1
0
        public async Task <IActionResult> ReleaseSelectedMessages(ReleaseSelectedMessages model)
        {
            var response = await _getMessagesByIdQuery.Handle(new GetMessagesByIdQuery()
            {
                UserId = _userService.GetUserId(),
                Ids    = model.Ids?.Split(",")
            });

            await _messageService.AbortMessages(response.Messages, model.QueueName);

            return(RedirectToAction("Index"));
        }
        public async Task Run([TimerTrigger("%CleanExpiredUserSessionsFunctionTimer%")] TimerInfo myTimer, ILogger log)
        {
            try
            {
                var queryResult = await _expiredUserSessionQuery.Handle(new GetExpiredUserSessionsQuery());

                foreach (var session in queryResult.ExpiredUserSessions)
                {
                    _userService.Configure(session.UserId, "CleanExpiredUserSessionsFunction");

                    var getMessagesResponse = await GetMessages(session.UserId);

                    while (getMessagesResponse.Messages.Any())
                    {
                        await _messageService.AbortMessages(getMessagesResponse.Messages, session.Queue);

                        getMessagesResponse = await GetMessages(session.UserId);
                    }

                    if (!getMessagesResponse.Messages.Any())
                    {
                        await _deleteUserSessionCommand.Handle(new DeleteUserSessionCommand()
                        {
                            Id     = session.Id,
                            UserId = session.UserId
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                log.LogError(ex, "CleanExpiredUserSessionsFunction");
            }
        }