public void PublisherPublishes()
        {
            var _options = BusOptions.GetDefaultOptions();
            // Arrange
            var factory = new ConnectionFactory()
            {
                HostName = _options.HostName,
                Port     = _options.Port,
                UserName = _options.UserName,
                Password = _options.Password,
            };

            using (var target = new EventPublisher())
                using (var _connection = factory.CreateConnection())
                    using (var _channel = _connection.CreateModel())
                    {
                        var ExchangeName = _options.ExchangeName;

                        string queueName = _channel.QueueDeclare().QueueName;

                        _channel.QueueBind(exchange: ExchangeName,
                                           queue: queueName,
                                           routingKey: "#",
                                           arguments: null);

                        var  consumer                   = new EventingBasicConsumer(_channel);
                        bool messageReceived            = false;
                        BasicDeliverEventArgs eventargs = null;
                        consumer.Received += (object sender, BasicDeliverEventArgs e) =>
                        {
                            messageReceived = true;
                            eventargs       = e;
                        };

                        _channel.BasicConsume(queue: queueName,
                                              noAck: true,
                                              consumer: consumer);

                        // Act
                        var evt = new SomeEvent()
                        {
                            SomeNumber = 7, SomeName = "Foo"
                        };
                        target.Publish(evt);

                        // Assert
                        Thread.Sleep(1000);
                        Assert.IsTrue(messageReceived);
                        Assert.IsNotNull(eventargs);
                        Assert.AreEqual("Minor.WSA.Infrastructure.Test.SomeEvent", eventargs.BasicProperties.Type);
                        SomeEvent result = (SomeEvent)JsonConvert.DeserializeObject(
                            Encoding.Unicode.GetString(eventargs.Body),
                            evt.GetType());
                        Assert.AreEqual(evt.Timestamp, result.Timestamp);
                        Assert.AreEqual("Minor.WSA.SomeEvent", result.RoutingKey);
                        Assert.AreEqual(7, result.SomeNumber);
                        Assert.AreEqual("Foo", result.SomeName);
                    }
        }
예제 #2
0
 public void SomeEventHandler(SomeEvent someEvent)
 {
 }