Beispiel #1
0
        public virtual ActionResult Publish()
        {
            for (var i = 0; i < 1000; i++)
            {
                var message = new DocumentPublishEventMessage
                {
                    DocumentId       = i,
                    DocumentRevision = i + 155,
                    DocumentType     = DocumentType.One,
                    Id                        = Guid.NewGuid(),
                    OrganizationId            = i,
                    UserId                    = i,
                    AdditionalPublicationData = new DocumentOnePublishAdditionalPublicationData
                    {
                        Password       = "******",
                        Login          = "******",
                        RegistryNumber = "4"
                    }
                };

                _documentPublishQueueService.PublishMessage(message);
            }

            return(Ok());
        }
Beispiel #2
0
        public async Task <IActionResult> ReEnqueueTaskById([FromBody] Guid id, [FromServices] IDocumentPublishQueueService documentPublishQueueService)
        {
            var task = await _publishDocumentTaskRepository.GetAsync(id);

            if (task == null)
            {
                return(NotFound("Задача не найдена"));
            }

            if (!task.IsFinished)
            {
                return(UnprocessableEntity("Задача на публикацию еще не завершена"));
            }

            if (task.LoadId != null)
            {
                return(UnprocessableEntity($"Документ опубликован с идентификатором {task.LoadId}"));
            }

            if (String.IsNullOrWhiteSpace(task.Payload))
            {
                return(UnprocessableEntity("Нет данных пользователя для повторной отправки задачи"));
            }

            DocumentPublishEventMessage documentPublishEventMessage;

            try
            {
                documentPublishEventMessage = new DocumentPublishEventMessage(task);
            }
            catch (Exception e)
            {
                return(UnprocessableEntity("Не удалось десериализовать данные пользователя для повторной отправки задачи " + e.Message));
            }

            try
            {
                task.State       = PublishState.None;
                task.UpdatedAt   = DateTime.Now;
                task.IsDelivered = false;
                task.RefId       = null;

                _publishDocumentTaskRepository.Save(task);

                documentPublishQueueService.PublishMessage(documentPublishEventMessage);
            }
            catch (Exception e)
            {
                return(UnprocessableEntity($"Возникла ошибка при попытке нарпавить на повторную публикацию {e.Message}"));
            }

            return(Ok("Задача успешно направлена на повторную публикацию"));
        }
 public PublishDocumentTask(DocumentPublishEventMessage message)
 {
     PublishDocumentTaskAttempts = new List <PublishDocumentTaskAttempt>();
     State            = PublishState.None;
     RefId            = null;
     UpdatedAt        = null;
     LoadId           = null;
     Id               = message.Id;
     DocumentId       = message.DocumentId;
     DocumentRevision = message.DocumentRevision;
     DocumentType     = message.DocumentType;
     UserId           = message.UserId;
     State            = PublishState.None;
     CreatedAt        = message.CreatedAt;
     OrganizationId   = message.OrganizationId;
     Payload          = JsonConvert.SerializeObject(message.AdditionalPublicationData, new JsonSerializerSettings
     {
         TypeNameHandling = TypeNameHandling.All
     });
 }
Beispiel #4
0
        public virtual ActionResult PublishSingle(Guid guid)
        {
            var message = new DocumentPublishEventMessage
            {
                DocumentId       = 512,
                DocumentRevision = 1155,
                DocumentType     = DocumentType.One,
                Id                        = guid,
                OrganizationId            = 21,
                UserId                    = 5,
                AdditionalPublicationData = new DocumentOnePublishAdditionalPublicationData
                {
                    Password       = "******",
                    Login          = "******",
                    RegistryNumber = "4"
                }
            };

            _documentPublishQueueService.PublishMessage(message);

            return(Ok());
        }