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(); } } }
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); }
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(); }
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); }
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(); }
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); }
/// <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); }
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); } } } }
static void Main(string[] args) { Console.WriteLine("Escutando..."); new DirectMessageReceiver(RabbitConnectionFactory.GetConnection()).Consume(); }
/// <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)); }