コード例 #1
0
        public async Task produces_expected_message_without_headers_using_default_serializer()
        {
            var spy = new KafkaProducerSpy();

            var sut = A.Producer
                      .With(spy)
                      .With(new MessageIdGeneratorStub(() => "1"))
                      .With(A.OutgoingMessageRegistry
                            .Register <Message>("foo", "bar", @event => @event.Id)
                            .Build()
                            )
                      .Build();

            await sut.Produce(
                message : new Message {
                Id = "dummyId"
            },
                headers : new Dictionary <string, object>
            {
            }
                );

            var expected = @"{
                                ""messageId"":""1"",
                                ""type"":""bar"",
                                ""causationId"":""1"",
                                ""correlationId"":""1"",
                                ""data"":{
                                    ""id"":""dummyId""
                                    }
                                }";

            AssertJson.Equal(expected, spy.Value);
        }
コード例 #2
0
        public async Task Can_create_outgoing_message_from_registry_with_expected_raw_message()
        {
            const string dummyMessageId   = "foo_id";
            const string dummyAggregateId = "dummyId";

            var spy = new KafkaProducerSpy();
            var sut = A.Producer
                      .With(spy)
                      .With(A.OutgoingMessageRegistry
                            .Register <DummyMessage>(DummyTopic, DummyType, x => x.AggregateId)
                            .Build()
                            )
                      .With(new MessageIdGeneratorStub(() => dummyMessageId))
                      .Build();

            await sut.Produce(new DummyMessage(dummyAggregateId));

            var expected = $@"{{
                                ""messageId"":""{dummyMessageId}"",
                                ""type"":""{DummyType}"",
                                ""causationId"":""foo_id"",
                                ""correlationId"":""foo_id"",
                                ""data"":{{
                                    ""aggregateId"":""{dummyAggregateId}""
                                    }}
                                }}";

            AssertJson.Equal(expected, spy.Value);
        }
コード例 #3
0
        public async Task Can_forward_headers()
        {
            var spy = new OutboxEntryRepositorySpy();

            var sut = A.OutboxQueue
                      .With(
                A.OutgoingMessageRegistry
                .Register <Message>("foo", "bar", @event => "baz")
                .Build()
                )
                      .With(spy)
                      .Build();

            var metadata = new Metadata()
            {
                MessageId     = "183388b5-a8e9-4cb4-b553-6699632461c7",
                CausationId   = "183388b5-a8e9-4cb4-b553-6699632461c7",
                CorrelationId = "183388b5-a8e9-4cb4-b553-6699632461c7"
            };

            await sut.Enqueue(new[] { new Message() }, metadata);

            var expected = @"{
                            ""messageId"":""183388b5-a8e9-4cb4-b553-6699632461c7"",
                            ""type"":""bar"",
                            ""causationId"":""183388b5-a8e9-4cb4-b553-6699632461c7"",
                            ""correlationId"":""183388b5-a8e9-4cb4-b553-6699632461c7"",
                            ""data"":{
                                }
                            }";


            AssertJson.Equal(expected, spy.OutboxEntries[0].Payload);
        }
コード例 #4
0
        public async Task returns_expected_serialized_value_of_simple_payload_without_headers()
        {
            var sut = new DefaultPayloadSerializer();

            var messageDataStub = "foo-message-data";

            var payloadStub = new PayloadDescriptorBuilder()
                              .WithMessageData(messageDataStub)
                              .Build();

            AssertJson.Equal(
                expected: $@"
                            {{
                                ""messageId"":""{payloadStub.MessageId}"",
                                ""type"":""{payloadStub.MessageType}"",
                                ""data"":""{messageDataStub}""
                            }}",
                actual: await sut.Serialize(payloadStub)
                );
        }
コード例 #5
0
        public async Task produces_message_using_message_handler_context()
        {
            var spy = new KafkaProducerSpy();

            var sut = A.Producer
                      .With(spy)
                      .With(new MessageIdGeneratorStub(() => "1"))
                      .With(A.OutgoingMessageRegistry
                            .Register <Message>("foo", "bar", @event => @event.Id)
                            .Build()
                            )
                      .Build();

            await sut.Produce(
                message : new Message {
                Id = "0"
            },
                context : new MessageHandlerContext(new Metadata
            {
                CausationId   = "my-causation",
                CorrelationId = "my-correlation"
            })
                );


            var expected = @"
                            {
                            ""messageId"":""1"",
                            ""type"":""bar"",
                            ""correlationId"":""my-correlation"",
                            ""causationId"":""1"",
                            ""data"":{
                                ""id"":""0""
                                }
                            }";

            AssertJson.Equal(expected, spy.Value);
        }
コード例 #6
0
        public async Task returns_expected_serialized_value_of_simple_payload_with_simple_headers()
        {
            var sut = new DefaultPayloadSerializer();

            var messageDataStub = "foo-message-data";
            var headerEntryStub = KeyValuePair.Create <string, object>("foo", "bar");

            var payloadStub = new PayloadDescriptorBuilder()
                              .WithMessageData(messageDataStub)
                              .WithMessageHeaders(headerEntryStub)
                              .Build();

            AssertJson.Equal(
                expected: $@"
                            {{
                                ""messageId"":""{payloadStub.MessageId}"",
                                ""type"":""{payloadStub.MessageType}"",
                                ""{headerEntryStub.Key}"":""{headerEntryStub.Value}"",
                                ""data"":""{messageDataStub}""
                            }}",
                actual: await sut.Serialize(payloadStub)
                );
        }