コード例 #1
0
ファイル: EFMessageStoreTest.cs プロジェクト: kouweizhong/CAP
        public void CanUpdateSentMessageUsingEF()
        {
            using (var db = CreateContext())
            {
                var guid    = Guid.NewGuid().ToString();
                var message = new CapSentMessage
                {
                    Id         = guid,
                    Content    = "this is message body",
                    StatusName = StatusName.Enqueued
                };
                db.Attach(message).State = Microsoft.EntityFrameworkCore.EntityState.Added;

                db.SaveChanges();

                var selectedMessage = db.CapSentMessages.FirstOrDefault(u => u.StatusName == StatusName.Enqueued);
                Assert.NotNull(selectedMessage);

                selectedMessage.StatusName = StatusName.Succeeded;
                selectedMessage.Content    = "Test";
                db.SaveChanges();

                selectedMessage = db.CapSentMessages.FirstOrDefault(u => u.StatusName == StatusName.Succeeded);
                Assert.NotNull(selectedMessage);
                Assert.True(selectedMessage.Content == "Test");
            }
        }
コード例 #2
0
ファイル: CapMessageStore.cs プロジェクト: kouweizhong/CAP
        /// <summary>
        /// Updates a message in a store as an asynchronous operation.
        /// </summary>
        /// <param name="message">The message to update in the store.</param>
        public async Task <OperateResult> UpdateSentMessageAsync(CapSentMessage message)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            Context.Attach(message);
            message.LastRun = DateTime.Now;
            Context.Update(message);

            try
            {
                await Context.SaveChangesAsync();

                return(OperateResult.Success);
            }
            catch (DbUpdateConcurrencyException ex)
            {
                return(OperateResult.Failed(new OperateError()
                {
                    Code = "DbUpdateConcurrencyException",
                    Description = ex.Message
                }));
            }
        }
コード例 #3
0
ファイル: CapMessageStore.cs プロジェクト: kouweizhong/CAP
        /// <summary>
        /// Creates the specified <paramref name="message"/> in the cap message store.
        /// </summary>
        /// <param name="message">The message to create.</param>
        public async Task <OperateResult> StoreSentMessageAsync(CapSentMessage message)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            Context.Add(message);
            await Context.SaveChangesAsync();

            return(OperateResult.Success);
        }
コード例 #4
0
        private async Task StoreMessage(string topic, string content)
        {
            var message = new CapSentMessage
            {
                KeyName    = topic,
                Content    = content,
                StatusName = StatusName.Enqueued
            };

            await _store.StoreSentMessageAsync(message);

            WaitHandleEx.PulseEvent.Set();

            _logger.EnqueuingSentMessage(topic, content);
        }
コード例 #5
0
ファイル: CapMessageStore.cs プロジェクト: kouweizhong/CAP
 public async Task <OperateResult> ChangeSentMessageStateAsync(CapSentMessage message, string status,
                                                               bool autoSaveChanges = true)
 {
     Context.Attach(message);
     message.LastRun    = DateTime.Now;
     message.StatusName = status;
     try
     {
         if (autoSaveChanges)
         {
             await Context.SaveChangesAsync();
         }
     }
     catch (DbUpdateConcurrencyException ex)
     {
         return(OperateResult.Failed(
                    new OperateError()
         {
             Code = "DbUpdateConcurrencyException",
             Description = ex.Message
         }));
     }
     return(OperateResult.Success);
 }
コード例 #6
0
 public Task <OperateResult> UpdateSentMessageAsync(CapSentMessage message)
 {
     throw new NotImplementedException();
 }
コード例 #7
0
 public Task <OperateResult> ChangeSentMessageStateAsync(CapSentMessage message, string statusName,
                                                         bool autoSaveChanges = true)
 {
     throw new NotImplementedException();
 }