public async Task AppendMessageAsync(ITransaction transaction, TaskMessageItem newMessage) { await EnsureStoreInitialized(); var sessionMessageProvider = await GetOrAddSessionMessagesInstance(newMessage.TaskMessage.OrchestrationInstance); await sessionMessageProvider.SendBeginAsync(transaction, new Message <Guid, TaskMessageItem>(Guid.NewGuid(), newMessage)); await this.Store.TryAddAsync(transaction, newMessage.TaskMessage.OrchestrationInstance.InstanceId, PersistentSession.Create(newMessage.TaskMessage.OrchestrationInstance)); }
public async Task <bool> TryAppendMessageAsync(ITransaction transaction, TaskMessageItem newMessage) { if (await this.Store.ContainsKeyAsync(transaction, newMessage.TaskMessage.OrchestrationInstance.InstanceId)) { var sessionMessageProvider = await GetOrAddSessionMessagesInstance(newMessage.TaskMessage.OrchestrationInstance); await sessionMessageProvider.SendBeginAsync(transaction, new Message <Guid, TaskMessageItem>(Guid.NewGuid(), newMessage)); return(true); } return(false); }
public async Task AppendMessageAsync(TaskMessageItem newMessage) { await RetryHelper.ExecuteWithRetryOnTransient(async() => { using (var txn = this.StateManager.CreateTransaction()) { await this.AppendMessageAsync(txn, newMessage); await txn.CommitAsync(); } }, uniqueActionIdentifier : $"Orchestration = '{newMessage.TaskMessage.OrchestrationInstance}', Action = '{nameof(SessionProvider)}.{nameof(AppendMessageAsync)}'"); this.TryEnqueueSession(newMessage.TaskMessage.OrchestrationInstance); }
public void TaskMessageItem_SerializationTests() { var expected = new TaskMessageItem(new TaskMessage() { OrchestrationInstance = new OrchestrationInstance() { InstanceId = "InstanceId", ExecutionId = "ExecutionId" }, SequenceNumber = 33, Event = new TaskScheduledEvent(-1) }); var actual = Measure.DataContractSerialization(expected); Assert.IsNotNull(actual); Assert.AreEqual(expected.TaskMessage.OrchestrationInstance.InstanceId, actual.TaskMessage.OrchestrationInstance.InstanceId); Assert.AreEqual(expected.TaskMessage.OrchestrationInstance.ExecutionId, actual.TaskMessage.OrchestrationInstance.ExecutionId); Assert.AreEqual(expected.TaskMessage.SequenceNumber, actual.TaskMessage.SequenceNumber); Assert.AreEqual(expected.TaskMessage.Event.EventId, actual.TaskMessage.Event.EventId); }