Exemple #1
0
        private IMessagePublisher CreatePublisher(string providerName)
        {
            var publisher = new EasyNetQPublisher();

            publisher.Initialize(providerName);
            return(publisher);
        }
 public ExecutionHandlingStrategyTests()
 {
     _publisher = new Mock <IPublisher>();
     _mockBus   = new Mock <IAdvancedBus>();
     _modelNamingConventionController = new Mock <IModelNamingConventionController>();
     _easyNetQPublisher = new EasyNetQPublisher(_mockBus.Object, _exchangeName, _modelNamingConventionController.Object);
     _mockExchange      = new Mock <IExchange>();
 }
Exemple #3
0
        public EasyNetQSubscriberTests()
        {
            var exchangename = "exchangeName";

            _bookingEventType = "bookingcreated";
            _version          = "0.1";
            _bookingName      = "bookingName";

            _mockBus = new Mock <IAdvancedBus>();
            var mockContainer = new Mock <IContainer>();

            _mockBus.SetupGet(x => x.Container).Returns(mockContainer.Object);
            _mockMainBus = new Mock <IBus>();
            _mockMainBus.SetupGet(x => x.Advanced).Returns(_mockBus.Object);

            _mockQueue = new Mock <IQueue>();

            _prefetchcount = 5;

            _modelNamingConventionController = new Mock <IModelNamingConventionController>();
            _easyNetQPublisher  = new EasyNetQPublisher(_mockBus.Object, exchangename, _modelNamingConventionController.Object);
            _consumerDisposable = new Mock <IDisposable>();


            _successHandlingStrategy = new Mock <ISuccessHandlingStrategy>();
            _successHandlingStrategy.Setup(x => x.HandleSuccessAsync(It.IsAny <IntegrationEvent>()))
            .Returns(Task.FromResult(true));
            _errorHandlingStrategy = new Mock <IErrorHandlingStrategy>();
            _errorHandlingStrategy.Setup(x => x.HandleErrorAsync(It.IsAny <MessageExecutionContext>()))
            .Returns(Task.FromResult(true));

            _subsciptionSelector = new Mock <ISubscriptionSelector>();
            _nameHandle          = new Mock <IDisposable>();

            var mockEnvironmentNamingConventionController = new Mock <IEnvironmentNamingConventionController>();

            _easyNetQBroker = new EasyNetQBroker(
                (connectionString, connected, disconnected, registerServices) =>
            {
                _mockMainBus.Object.Advanced.Disconnected += disconnected;
                _mockMainBus.Object.Advanced.Connected    += connected;
                return(_mockBus.Object);
            }, string.Empty, string.Empty, string.Empty, mockEnvironmentNamingConventionController.Object);

            _easyNetQSubscriber = new EasyNetQSubscriber(_errorHandlingStrategy.Object, _mockBus.Object,
                                                         _mockQueue.Object, _prefetchcount, _subsciptionSelector.Object, _successHandlingStrategy.Object, _nameHandle.Object);
        }
Exemple #4
0
        static void Main(string[] args)
        {
            //var publisher = new RabbitMQPublisher();

            //var input = Input();
            //while (input != "exit")
            //{
            //    var log = new TestMessageEntity
            //    {
            //        Platform = "test",
            //        ClientId = "test_cli",
            //        Command = 100,
            //        Data = input,
            //        Message = "测试消息"
            //    };
            //    publisher.Publish(log, ExchangeTypeCode.Direct);
            //    input = Input();
            //}

            //publisher.Stop();

            EasyNetQPublisher easyNetQPublisher = new EasyNetQPublisher();
            var input = Input();

            while (input != "exit")
            {
                var log = new TestMessageEntity
                {
                    Platform = "test",
                    ClientId = "test_cli",
                    Command  = 100,
                    Data     = input,
                    Message  = "测试消息"
                };
                easyNetQPublisher.Publish(log);
                input = Input();
            }
            easyNetQPublisher.Stop();
        }
        public async void PublishDirectEventAsync_MessageMustBeSerializedAndCorrectlyRouted(bool persistant, byte deliveryMode)
        {
            //prepare

            var mockBus = new Mock <IAdvancedBus>();

            var mockExchange = new Mock <IExchange>();

            var mockModelNamingConventionController = new Mock <IModelNamingConventionController>();

            var subscriberName = "subscriber";
            var routingKey     = string.Concat("direct.", subscriberName);;

            IExchange         actualExchange   = null;
            string            actualRouting    = string.Empty;
            bool              actualMandatory  = true;
            MessageProperties actualProperties = null;

            byte[] actualMsg = null;

            mockModelNamingConventionController.Setup(x => x.GetDirectRoutingKey(subscriberName)).Returns(routingKey);

            mockBus.Setup(x => x.PublishAsync(mockExchange.Object, routingKey, false,
                                              It.IsAny <MessageProperties>(), It.IsAny <byte[]>()))
            .Returns((IExchange exchange, string routing, bool mandatory,
                      MessageProperties properties, byte[] msg) =>
                     { return(Task.FromResult(true)); })
            .Callback <IExchange, string, bool, MessageProperties, byte[]>(
                (exchange, routing, mandatory, properties, msg) =>
            {
                actualExchange   = exchange;
                actualRouting    = routing;
                actualMandatory  = mandatory;
                actualProperties = properties;
                actualMsg        = msg;
            });

            mockBus.Setup(x => x.ExchangeDeclareAsync("exchangename", ExchangeType.Topic,
                                                      false, true, false, false, null, false))
            .Returns((string exchangename, string exchanegType,
                      bool passive, bool durable, bool autoDelete, bool internalflag,
                      string alternateExchange, bool delayed) =>
                     { return(Task.FromResult(mockExchange.Object)); });

            //act
            EasyNetQPublisher easyNetQPublisher =
                new EasyNetQPublisher(mockBus.Object, "exchangename", mockModelNamingConventionController.Object);

            BookingCreated bookingCreated =
                new BookingCreated()
            {
                BookingName = string.Concat("Microsoft Sale",
                                            Guid.NewGuid().ToString())
            };

            var bookingCreatedIntegrationEvent = new IntegrationEvent <BookingCreated>()
            {
                Content   = bookingCreated,
                EventType = "bookingcreated"
            };
            await easyNetQPublisher.PublishDirectEventAsync(bookingCreatedIntegrationEvent,
                                                            subscriberName, persistant);



            //check
            actualExchange.Should().Be(mockExchange.Object);
            actualRouting.Should().Be(routingKey);
            actualMandatory.Should().Be(false);
            actualProperties.ShouldBeEquivalentTo(new MessageProperties()
            {
                DeliveryMode = deliveryMode
            });
            var messagejson  = JsonConvert.SerializeObject(bookingCreatedIntegrationEvent);
            var messagebytes = Encoding.UTF8.GetBytes(messagejson);

            actualMsg.ShouldBeEquivalentTo(messagebytes);
        }