Esempio n. 1
0
        public void Dequeue_ReturnsFetchedJob_FromOtherQueues_IfFirstAreEmpty()
        {
            RabbitMqUtils.EnqueueJobId("queue-2", "job-id");
            using (var queue = CleanRabbitMqQueueAttribute.GetMessageQueue("queue-1", "queue-2"))
            {
                var fetchedJob = queue.Dequeue(new[] { "queue-1", "queue-2" }, _token);

                Assert.Equal("job-id", fetchedJob.JobId);
            }
        }
Esempio n. 2
0
        public void Dequeue_ReturnsFetchedJob_WithJobId()
        {
            RabbitMqUtils.EnqueueJobId("my-queue", "job-id");

            using (var queue = CleanRabbitMqQueueAttribute.GetMessageQueue("my-queue"))
            {
                var fetchedJob = queue.Dequeue(new[] { "my-queue" }, _token);
                fetchedJob.RemoveFromQueue();

                Assert.Equal("job-id", fetchedJob.JobId);
            }
        }
Esempio n. 3
0
        public void GetEnqueuedAndFetchedCount_ReturnsCorrectCounters()
        {
            RabbitMqUtils.EnqueueJobId("my-queue", "1");
            RabbitMqUtils.EnqueueJobId("my-queue", "2");
            RabbitMqUtils.EnqueueJobId("my-queue", "3");

            var api = CreateMonitoringApi();

            var result = api.GetEnqueuedAndFetchedCount("my-queue");

            Assert.Equal(3, result.EnqueuedCount);
            Assert.Null(result.FetchedCount);
        }
Esempio n. 4
0
        public void GetEnqueuedJobIds_ReturnsCorrectResult()
        {
            for (var i = 1; i <= 10; i++)
            {
                RabbitMqUtils.EnqueueJobId("my-queue", i.ToString());
            }

            var api = CreateMonitoringApi();

            var result = api.GetEnqueuedJobIds("my-queue", 3, 2).ToArray();

            Assert.Equal(2, result.Length);
            Assert.Equal(4, result[0]);
            Assert.Equal(5, result[1]);
        }
Esempio n. 5
0
        public void DisposeWithoutRemoval_OnFetchedJob_ReturnsTheJobToTheQueue()
        {
            // Arrange
            RabbitMqUtils.EnqueueJobId("my-queue", "job-id");

            using (var queue = CleanRabbitMqQueueAttribute.GetMessageQueue("my-queue"))
            {
                // Act
                var fetchedJob = queue.Dequeue(new[] { "my-queue" }, _token);
                fetchedJob.Dispose();

                // Assert
                var jobId = RabbitMqUtils.DequeueJobId("my-queue", TimeSpan.FromSeconds(5));
                Assert.Equal("job-id", jobId);
            }
        }
Esempio n. 6
0
        public void DisposeWithoutRemoval_OnFetchedJob_CanBeDequeuedAgain()
        {
            // Arrange
            RabbitMqUtils.EnqueueJobId("my-queue", "job-id");

            using (var queue = CleanRabbitMqQueueAttribute.GetMessageQueue("my-queue"))
            {
                // Act
                var fetchedJob = queue.Dequeue(new[] { "my-queue" }, _token);
                fetchedJob.Dispose();

                // Assert
                var newFetchedJob = queue.Dequeue(new[] { "my-queue" }, _token);

                Assert.Equal("job-id", newFetchedJob.JobId);
            }
        }
Esempio n. 7
0
        public void Dequeue_MakesJobInvisibleForOtherFetchers()
        {
            // Arrange
            RabbitMqUtils.EnqueueJobId("my-queue", "job-id9");

            using (var queue = CleanRabbitMqQueueAttribute.GetMessageQueue("my-queue"))
            {
                // Act
                var fetchedJob = queue.Dequeue(new[] { "my-queue" }, _token);

                // Assert
                Assert.NotNull(fetchedJob);

                var exception = Assert.Throws <TimeoutException>(
                    () => RabbitMqUtils.DequeueJobId("my-queue", TimeSpan.FromSeconds(1)));

                Assert.Equal(exception.Message, "my-queue");
            }
        }
Esempio n. 8
0
        public void RemoveFromQueue_OnFetchedJob_RemovesTheJobCompletely()
        {
            // Arrange
            RabbitMqUtils.EnqueueJobId("my-queue", "job-id");
            using (var queue = CleanRabbitMqQueueAttribute.GetMessageQueue("my-queue"))
            {
                // Act
                using (var fetchedJob = queue.Dequeue(new[] { "my-queue" }, _token))
                {
                    fetchedJob.RemoveFromQueue();
                }

                // Assert
                var exception = Assert.Throws <TimeoutException>(
                    () => RabbitMqUtils.DequeueJobId("my-queue", TimeSpan.FromSeconds(1)));

                Assert.Equal(exception.Message, "my-queue");
            }
        }
Esempio n. 9
0
        public override async Task Job(DateTime?datetime = null)
        {
            bool finish = true;
            int  page   = 836;
            List <ECSkuRelation> skuRelation = new List <ECSkuRelation>();

            using (var uow = _uowProvider.CreateUnitOfWork())
            {
                var repository = uow.GetRepository <ECSkuRelation>();
                //try
                //{
                //    await repository.DeleteAll();
                //    await uow.SaveChangesAsync();
                //}
                //catch (Exception ex)
                //{
                //    log.Error($"初始化Sku映射信息,删除Sku映射信息异常:{ex.Message}");
                //    throw ex;
                //}
                EBGetSkuRelationReqModel reqModel  = new EBGetSkuRelationReqModel();
                RelationCondition        condition = new RelationCondition();
                condition.AddTimeStart = "2018-01-01";
                condition.AddTimeEnd   = "2020-05-26";
                while (finish)
                {
                    reqModel.Page      = page;
                    reqModel.PageSize  = 1000;
                    reqModel.Condition = condition;
                    EBGetSkuRelationRequest request = new EBGetSkuRelationRequest(login.Username, login.Password, reqModel);
                    var response = await request.Request();

                    System.Diagnostics.Debug.WriteLine($"第{page}页获取成功");
                    if (response.Body.Count == 1000)
                    {
                        foreach (var item in response.Body)
                        {
                            try
                            {
                                var m = Mapper <EC_SkuRelation, ECSkuRelation> .Map(item);

                                m.CreateTime = DateTime.Parse(reqModel.Condition.AddTimeEnd);
                                skuRelation.Add(m);
                            }
                            catch (Exception ex)
                            {
                                RabbitMqUtils.pushMessage(new LogPushModel("Xin", "EcGetSkuRelationInit", "ERROR", "Sku映射转换实体类出现异常;" + ex.Message, reqModel));
                                System.Diagnostics.Debug.WriteLine($"Sku映射转换实体类出现异常:时间区间{reqModel.Condition.AddTimeStart.ToString()}TO{reqModel.Condition.AddTimeEnd.ToString()}第{reqModel.Page}页;异常信息:{ex.Message}");
                                throw ex;
                            }
                        }
                    }
                    else
                    {
                        finish = false;
                        foreach (var item in response.Body)
                        {
                            try
                            {
                                var m = Mapper <EC_SkuRelation, ECSkuRelation> .Map(item);

                                m.CreateTime = DateTime.Parse(reqModel.Condition.AddTimeEnd);
                                skuRelation.Add(m);
                            }
                            catch (Exception ex)
                            {
                                RabbitMqUtils.pushMessage(new LogPushModel("Xin", "EcGetSkuRelationInit", "ERROR", "Sku映射转换实体类出现异常;" + ex.Message, reqModel));
                                System.Diagnostics.Debug.WriteLine($"Sku映射转换实体类出现异常:时间区间{reqModel.Condition.AddTimeStart.ToString()}TO{reqModel.Condition.AddTimeEnd.ToString()}第{reqModel.Page}页;异常信息:{ex.Message}");
                                throw ex;
                            }
                        }
                        try
                        {
                            await repository.BulkInsertAsync(skuRelation, x => x.IncludeGraph = true);

                            uow.BulkSaveChanges();
                            skuRelation.Clear();
                        }
                        catch (Exception ex)
                        {
                            RabbitMqUtils.pushMessage(new LogPushModel("Xin", "EcGetSkuRelationInit", "ERROR", "入库单信息,写入数据库异常;" + ex.Message, reqModel));
                            System.Diagnostics.Debug.WriteLine($"入库单信息,写入数据库异常:时间区间{reqModel.Condition.AddTimeStart.ToString()}TO{reqModel.Condition.AddTimeEnd.ToString()}第{reqModel.Page}页;异常信息:{ex.Message}");
                            throw ex;
                        }
                    }
                    if (page % 5 == 0 && skuRelation.Count > 0)
                    {
                        try
                        {
                            System.Diagnostics.Debug.WriteLine($"本次写入{skuRelation.Count}条");
                            await repository.BulkInsertAsync(skuRelation, x => x.IncludeGraph = true);

                            uow.BulkSaveChanges();
                            skuRelation.Clear();
                        }
                        catch (Exception ex)
                        {
                            RabbitMqUtils.pushMessage(new LogPushModel("Xin", "EcGetSkuRelationInit", "ERROR", "入库单信息,写入数据库异常;" + ex.Message, reqModel));
                            System.Diagnostics.Debug.WriteLine($"入库单信息,写入数据库异常:时间区间{reqModel.Condition.AddTimeStart.ToString()}TO{reqModel.Condition.AddTimeEnd.ToString()}第{reqModel.Page}页;异常信息:{ex.Message}");
                            throw ex;
                        }
                    }
                    page++;
                }
                //response.TotalCount = response.TotalCount == null ? "1" : response.TotalCount;
                //int pageNum = (int)Math.Ceiling(long.Parse(response.TotalCount) * 1.0 / 1000);
                //for (int page = 1; page < pageNum; page++)
                //{
                //    reqModel.Page = page;
                //    reqModel.PageSize = 1000;
                //    try
                //    {
                //        System.Diagnostics.Debug.WriteLine($"Sku映射,开始拉取,开始时间:{DateTime.Now};时间区间{reqModel.Condition.AddTimeStart.ToString()}TO{reqModel.Condition.AddTimeEnd.ToString()}第{reqModel.Page}页;");
                //        request = new EBGetSkuRelationRequest(login.Username, login.Password, reqModel);
                //        response =await request.Request();
                //        foreach (var item in response.Body)
                //        {
                //            try
                //            {
                //                var m = Mapper<EC_SkuRelation, ECSkuRelation>.Map(item);
                //                m.CreateTime = DateTime.Parse(reqModel.Condition.AddTimeEnd);
                //                skuRelation.Add(m);
                //            }
                //            catch (Exception ex)
                //            {
                //                System.Diagnostics.Debug.WriteLine($"Sku映射转换实体类出现异常:时间区间{reqModel.Condition.AddTimeStart.ToString()}TO{reqModel.Condition.AddTimeEnd.ToString()}第{reqModel.Page}页;异常信息:{ex.Message}");
                //                throw ex;
                //            }
                //        }
                //    }
                //    catch (Exception ex)
                //    {
                //        System.Diagnostics.Debug.WriteLine($"Sku映射接口获取出现异常:时间区间{reqModel.Condition.AddTimeStart.ToString()}TO{reqModel.Condition.AddTimeEnd.ToString()}第{reqModel.Page}页;异常信息:{ex.Message}");
                //        throw ex;
                //    }
                //    try
                //    {
                //        System.Diagnostics.Debug.WriteLine($"拉取结束&开始写入时间时间: { DateTime.Now}");
                //        await repository.BulkInsertAsync(skuRelation, x => x.IncludeGraph = true);
                //        uow.BulkSaveChanges();
                //        skuRelation.Clear();
                //        System.Diagnostics.Debug.WriteLine($"写入完成时间: { DateTime.Now}");
                //    }
                //    catch (Exception ex)
                //    {
                //        System.Diagnostics.Debug.WriteLine($"入库单信息,写入数据库异常:时间区间{reqModel.Condition.AddTimeStart.ToString()}TO{reqModel.Condition.AddTimeEnd.ToString()}第{reqModel.Page}页;异常信息:{ex.Message}");
                //        throw ex;
                //    }
                //}
                //Parallel.ForEach(pages, new ParallelOptions { MaxDegreeOfParallelism = 1 },  page =>  mulitSaveAsync(reqModel,page));
            }
        }