Esempio n. 1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Starting Worker2...");

            using (var connection = RabbitConnectionFactory.GetConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    var queueName = channel.QueueDeclare().QueueName;
                    channel.QueueBind(queueName, "logs", "");

                    var consumer = new EventingBasicConsumer(channel);
                    consumer.Received += (model, ea) =>
                    {
                        var body    = ea.Body;
                        var message = Encoding.UTF8.GetString(body);
                        Console.WriteLine(" [x] {0}", message);

                        channel.BasicAck(ea.DeliveryTag, false);
                    };

                    channel.BasicConsume(queue: queueName,
                                         autoAck: false,
                                         consumer: consumer);

                    Console.ReadLine();
                }
            }
        }
Esempio n. 2
0
        public void ShouldHandleMultipleConnections()
        {
            //arrange
            const string rabbitHost1             = "localhost1";
            var          rabbitConnectionString1 = string.Format("amqp://{0}", rabbitHost1);
            var          queueSettings1          = new QueueSettings("queue",
                                                                     new ApplicationConfiguration {
                RabbitConnectionString = rabbitConnectionString1
            });

            const string rabbitHost2             = "localhost2";
            var          rabbitConnectionString2 = string.Format("amqp://{0}", rabbitHost2);
            var          queueSettings2          = new QueueSettings("queue",
                                                                     new ApplicationConfiguration {
                RabbitConnectionString = rabbitConnectionString2
            });
            var factory = new RabbitConnectionFactory();

            //act
            var instance1 = factory.Create(queueSettings1.RabbitConnectionString, (ushort)queueSettings1.HeartbeatIntervalSeconds);
            var instance2 = factory.Create(queueSettings2.RabbitConnectionString, (ushort)queueSettings2.HeartbeatIntervalSeconds);

            //assert
            instance1.Should().NotBeSameAs(instance2);
            instance1.Should().BeOfType <ConnectionFactory>();
            instance2.Should().BeOfType <ConnectionFactory>();
            (instance1 as ConnectionFactory).HostName.Should().Be(rabbitHost1);
            (instance2 as ConnectionFactory).HostName.Should().Be(rabbitHost2);
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            var sender = new DirectMessageSender(RabbitConnectionFactory.GetConnection());

            while (true)
            {
                var message = Console.ReadLine();

                sender.Send(message);
            }
        }
        public void Load(IStartupSettings startupSettings)
        {
            var queueSettings = QueueSettings.Create(startupSettings);

            Logger.Info("Connecting to queue...");
            IConnection connection = new RabbitConnectionFactory()
                                     .LinkTo(queueSettings.RabbitAmqpUri)
                                     .Create();

            Logger.Info("Connected to queue {0}", connection.Endpoint);
            _connection = connection.ToOption();
        }
Esempio n. 5
0
        static void Main(string[] args)
        {
            IRabbitConnectionFactory connectionFactory = new RabbitConnectionFactory();

            MessageBusConfiguration.ExchangeName = "Test.Exchange";
            MessageBusConfiguration.HostName     = "localhost";
            MessageBusConfiguration.Password     = "******";
            MessageBusConfiguration.Port         = 5672;
            MessageBusConfiguration.QueueName    = "Test.Queue";
            MessageBusConfiguration.UserName     = "******";
            MessageBusConfiguration.VirtualHost  = "/";
            MessageBusConfiguration.ConsumerTag  = "TestHarness";

            new TestHandler(connectionFactory);
        }
Esempio n. 6
0
        public void ShouldStoreFactoryInDictionaryByRabbitUri()
        {
            //arrange
            const string rabbitConnectionString = "amqp://localhost2";
            var          queueSettings          = new QueueSettings("queue",
                                                                    new ApplicationConfiguration {
                RabbitConnectionString = rabbitConnectionString
            });
            var factory = new RabbitConnectionFactory();

            //act
            factory.Create(queueSettings.RabbitConnectionString, (ushort)queueSettings.HeartbeatIntervalSeconds);

            //assert
            factory.connectionFactories.ContainsKey(rabbitConnectionString).Should().BeTrue();
        }
Esempio n. 7
0
        public void ShouldReuseInstanceOfConnectionFactoryWhenItExists()
        {
            //arrange
            const string rabbitConnectionString = "amqp://localhost2";
            var          queueSettings          = new QueueSettings("queue",
                                                                    new ApplicationConfiguration {
                RabbitConnectionString = rabbitConnectionString
            });
            var factory          = new RabbitConnectionFactory();
            var originalInstance = factory.Create(queueSettings.RabbitConnectionString, (ushort)queueSettings.HeartbeatIntervalSeconds);

            //act
            var secondInstance = factory.Create(queueSettings.RabbitConnectionString, (ushort)queueSettings.HeartbeatIntervalSeconds);

            //assert
            originalInstance.Should().BeSameAs(secondInstance);
        }
Esempio n. 8
0
        /// <summary>
        /// 添加自定义Rabbit连接工厂
        /// </summary>
        /// <param name="services">服务收藏</param>
        /// <param name="options">配置回调</param>
        /// <returns>AMQP连接工厂</returns>
        public static IAmqpConnectionFactory AddCustomerRabbitConnectionFactory(this IServiceCollection services, Action <RabbitConnectionFactoryCustomerOptions> options = null)
        {
            var config = new RabbitConnectionFactoryCustomerOptions();

            if (options != null)
            {
                options(config);
            }
            if (config.ConfigReader == null)
            {
                config.ConfigReader = new AmqpConfigCache();
            }
            AmqpUtil.GlobalConfigReader = config.ConfigReader;

            var factory = new RabbitConnectionFactory(config.SymmetricalEncryption, config.AppConfig, config.ConfigReader);

            services.AddSingleton <IAmqpConnectionFactory>(factory);

            return(factory);
        }
Esempio n. 9
0
        static void Main(string[] args)
        {
            Console.WriteLine("Starting publisher...");

            using (var connection = RabbitConnectionFactory.GetConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    channel.ExchangeDeclare("logs", ExchangeType.Fanout);

                    while (true)
                    {
                        var message = Console.ReadLine();

                        var body = Encoding.UTF8.GetBytes(message);
                        channel.BasicPublish(exchange: "logs",
                                             routingKey: "",
                                             basicProperties: null,
                                             body: body);
                    }
                }
            }
        }
Esempio n. 10
0
        static void Main(string[] args)
        {
            Console.WriteLine("Escutando...");

            new DirectMessageReceiver(RabbitConnectionFactory.GetConnection()).Consume();
        }
Esempio n. 11
0
        /// <summary>
        /// 创建消息队列连接来自微软配置并打开
        /// </summary>
        /// <param name="factory">Rabbit连接工厂</param>
        /// <param name="funQueueReader">消息队列读取</param>
        /// <param name="options">配置</param>
        /// <param name="beforeConfigBuilder">生成配置前回调</param>
        /// <returns>消息队列连接</returns>
        public static IMessageQueueConnection CreateConnectionConfigureAndOpen(out IMessageQueueConnectionFactory factory, Func <string, IRabbitMessageQueueReader> funQueueReader = null, Action <RabbitConnectionWrapInfo> options = null, Action <IConfigurationBuilder, string, object> beforeConfigBuilder = null)
        {
            factory = new RabbitConnectionFactory();

            return(CreateConnectionConfigureAndOpen(factory, funQueueReader, options, beforeConfigBuilder));
        }