public async Task Can_DeterministicGuidGenerator() { Guid myAppGuid = new Guid("8D1E0B02-0D78-408E-8211-F899BE6F8AA2"); var generator = new DeterministicGuidGenerator(myAppGuid); using (var fixture = GetFixture()) { using (var store = await fixture.GetStreamStore()) { const string streamId = "stream-1"; var messageId = generator.Create(streamId, ExpectedVersion.Any, "data"); var messageId2 = generator.Create(streamId, ExpectedVersion.Any, "data"); var messageId3 = generator.Create(streamId, ExpectedVersion.Any, "other data"); messageId2.ShouldBe(messageId, "message ids should be the same for same messages"); messageId3.ShouldNotBe(messageId); var m1 = new NewStreamMessage(messageId, "t", "data"); var m2 = new NewStreamMessage(messageId2, "t", "data"); var m3 = new NewStreamMessage(messageId3, "t", "other data"); // Creates stream with idempotent attempt await store.AppendToStream(streamId, ExpectedVersion.Any, new[] { m1, m3 }); } } }
public ProcessHandlerModule(ICommandDispatcher dispatcher, Func <IProcessManagerRepository> repositoryFactory, Func <Guid, string> buildId = null, string bucketId = null) { _dispatcher = dispatcher; _repositoryFactory = repositoryFactory; _buildId = buildId ?? (correlationId => typeof(TProcess).Name + "-" + correlationId); _bucketId = bucketId; _inner = new HandlerModule(); var generator = new DeterministicGuidGenerator(Guid.Parse(NAMESPACE)); _buildCommitId = (commitId, processId) => generator.Create(commitId + "-" + processId); }