Example #1
0
        private byte[] GetEnveloppeDataForEvent(string publisher, string content)
        {
            var evt = new RabbitEvent {
                Data = content
            };
            var ev = new Enveloppe(JsonConvert.SerializeObject(evt), typeof(RabbitEvent), publisher);

            return(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(ev)));
        }
        public async Task RabbitMQClientBus_PublishEventAsync_Should_Be_Readable()
        {
            var          appId     = Guid.NewGuid();
            const string queueName = "test_publish_queue_1";

            try
            {
                _channel.ExchangeDeclare(
                    exchange: appId + "_events",
                    type: ExchangeType.Fanout,
                    durable: true,
                    autoDelete: false);
                _channel.QueueDeclare(queueName, false, true, true);
                _channel.QueueBind(queueName, appId + "_events", "");

                var evt = new RabbitEvent
                {
                    Data = "testData"
                };

                var b = new RabbitMQEventBus(
                    new JsonDispatcherSerializer(),
                    new RabbitMQClientBusConfiguration(appId.ToString(), _testConfiguration["host"], _testConfiguration["user"], _testConfiguration["password"]));
                var allCalled = false;

                await b.PublishEventAsync(evt).ContinueWith(t =>
                {
                    t.Result.IsSuccess.Should().BeTrue();
                    var result = _channel.BasicGet(queueName, true);
                    result.Should().NotBeNull();
                    var enveloppeAsStr = Encoding.UTF8.GetString(result.Body);
                    enveloppeAsStr.Should().NotBeNullOrWhiteSpace();

                    var receivedEnveloppe = enveloppeAsStr.FromJson <Enveloppe>();
                    receivedEnveloppe.Should().NotBeNull();

                    var type = Type.GetType(receivedEnveloppe.AssemblyQualifiedDataType);
                    var evet = receivedEnveloppe.Data.FromJson(type);
                    evet.Should().BeOfType <RabbitEvent>();
                    evet.As <RabbitEvent>().Data.Should().Be("testData");
                    allCalled = true;
                }).ConfigureAwait(false);

                allCalled.Should().BeTrue();
            }
            finally
            {
                _channel.ExchangeDelete(appId + "_events");
                _channel.QueueDelete(queueName);
            }
        }