Exemplo n.º 1
0
        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 });
                }
            }
        }
Exemplo n.º 2
0
        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);
        }