static void Main(string[] args) { Console.Title = "订阅者"; #region Redis //ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379"); //redis.PreserveAsyncOrder = false;//为确保安全,消息的传递默认是有序的。为获得更好的性能强烈建议你使用并行操作 //ISubscriber sub = redis.GetSubscriber(); ////sub.Subscribe("messages", (channel, message) => ////{ //// Console.WriteLine((string)message); ////}); //IMessageBus messageBus = new RedisMessageBus(sub, "messages"); //Console.WriteLine("订阅Channel:messages"); //messageBus.Subscribe<string>((message) => //{ // Console.WriteLine("收到广播消息:" + (string)message); //}); #endregion #region RabbitMQ IMessageBus messageBus = new RabbitMQMessageBus(hostNmae: "localhost", userName: "******", password: "******", queueName: "NDQueue", routingKey: "NDQueueRoutingKey", exhangeName: "NDExchange", durable: false, persistent: false, exclusive: false, autoDelete: false, queueArguments: null); Console.WriteLine("Subscriber...."); messageBus.Subscribe <string>(msg => { Console.WriteLine(msg); }); Console.ReadLine(); #endregion Console.ReadKey(); }
public static void Main(string[] args) { IMessageBus messageBus = new RabbitMQMessageBus("guest", "guest", "FoundatioQueue", "FoundatioQueueRoutingKey", "FoundatioExchange", true, true, false, false, null, TimeSpan.FromMilliseconds(50)); Console.WriteLine("Subscriber...."); messageBus.Subscribe <string>(msg => { Console.WriteLine(msg); }); Console.ReadLine(); }
public void Subscribe <T>(string name, Action <T> handler) where T : class { IMessageBus messageBus = new RabbitMQMessageBus(new RabbitMQMessageBusOptions { ConnectionString = "amqp://192.168.180.128", Topic = "aaa", ExchangeName = name }); messageBus.SubscribeAsync <T>(handler); }
public void Publish <T>(string name, T contentObj) where T : class { IMessageBus messageBus = new RabbitMQMessageBus(new RabbitMQMessageBusOptions { ConnectionString = "amqp://192.168.180.128", Topic = "aaa", ExchangeName = name }); messageBus.PublishAsync <T>(contentObj); }
public static void Main(string[] args) { IMessageBus messageBus = new RabbitMQMessageBus("amqp://localhost", "FoundatioQueue", "FoundatioQueueRoutingKey", "FoundatioExchange", defaultMessageTimeToLive: TimeSpan.FromMilliseconds(50)); Console.WriteLine("Subscriber...."); messageBus.Subscribe <string>(msg => { Console.WriteLine(msg); }); Console.ReadLine(); }
public static void Main(string[] args) { Console.WriteLine("Waiting to receive messages...."); IMessageBus messageBus = new RabbitMQMessageBus("amqp://localhost", "FoundatioQueue", "FoundatioExchange"); messageBus.SubscribeAsync <string>(msg => { Console.WriteLine(msg); }).GetAwaiter().GetResult(); Console.ReadLine(); }
public static void Main(string[] args) { IMessageBus messageBus = new RabbitMQMessageBus("guest", "guest", "FoundatioQueue", "FoundatioQueueRoutingKey", "FoundatioExchange", true, true, false, false, null, TimeSpan.FromMilliseconds(50)); string input; Console.WriteLine("Publisher..."); Console.WriteLine("Enter the messages to send (press CTRL+Z) to exit :"); do { input = Console.ReadLine(); messageBus.PublishAsync(input); } while (input != null); messageBus.Dispose(); }
public static void Main(string[] args) { IMessageBus messageBus = new RabbitMQMessageBus("amqp://localhost", "FoundatioQueue", "FoundatioQueueRoutingKey", "FoundatioExchange", defaultMessageTimeToLive: TimeSpan.FromMilliseconds(50)); string input; Console.WriteLine("Publisher..."); Console.WriteLine("Enter the messages to send (press CTRL+Z) to exit :"); do { input = Console.ReadLine(); messageBus.PublishAsync(input); } while (input != null); messageBus.Dispose(); }
public static void Main(string[] args) { Console.WriteLine("Enter the message and press enter to send:"); IMessageBus messageBus = new RabbitMQMessageBus("amqp://localhost", "FoundatioQueue", "FoundatioExchange"); string message; do { message = Console.ReadLine(); messageBus.PublishAsync(message); } while (message != null); messageBus.Dispose(); }
public static async Task Main() { Console.WriteLine("Enter the message and press enter to send:"); using var messageBus = new RabbitMQMessageBus(new RabbitMQMessageBusOptions { ConnectionString = "amqp://localhost:5672" }); string message; do { message = Console.ReadLine(); var delay = TimeSpan.FromSeconds(1); var body = new MyMessage { Hey = message }; await messageBus.PublishAsync(body, delay); Console.WriteLine("Message sent. Enter new message or press enter to exit:"); } while (!String.IsNullOrEmpty(message)); }
static void Main(string[] args) { Console.Title = "发布者"; #region Redis //ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379"); //redis.PreserveAsyncOrder = false;//为确保安全,消息的传递默认是有序的。为获得更好的性能强烈建议你使用并行操作 //ISubscriber sub = redis.GetSubscriber(); //IMessageBus messageBus = new RedisMessageBus(sub, "messages"); //Console.WriteLine("发布Channle:messages"); //while (true) //{ // Console.WriteLine("请输入要发布的消息"); // string r = Console.ReadLine(); // messageBus.PublishAsync("发布广播消息:" + r); // Console.WriteLine("ok!"); //} #endregion #region RabbitMQ IMessageBus messageBus = new RabbitMQMessageBus(hostNmae: "localhost", userName: "******", password: "******", queueName: "NDQueue", routingKey: "NDQueueRoutingKey", exhangeName: "NDExchange", durable: false, persistent: false, exclusive: false, autoDelete: false, queueArguments: null); string input; Console.WriteLine("Publisher..."); Console.WriteLine("Enter the messages to send (press CTRL+Z) to exit :"); int index = 1; while (index < 11) { //input = Console.ReadLine(); Console.WriteLine(index); messageBus.PublishAsync(DateTime.Now + ":" + index); index++; } Console.WriteLine("ok!"); //messageBus.Dispose(); #endregion Console.ReadKey(); }
public static async Task Main(string[] args) { Console.WriteLine("Waiting to receive messages, press enter to quit..."); var tasks = new List <Task>(); var messageBuses = new List <IMessageBus>(); for (int i = 0; i < 3; i++) { var messageBus = new RabbitMQMessageBus(new RabbitMQMessageBusOptions { ConnectionString = "amqp://localhost:5672" }); messageBuses.Add(messageBus); tasks.Add(messageBus.SubscribeAsync <MyMessage>(msg => { Console.WriteLine($"Got subscriber {messageBus.MessageBusId} message: {msg.Hey}"); })); } await Task.WhenAll(tasks); Console.ReadLine(); foreach (var messageBus in messageBuses) { messageBus.Dispose(); } }
public static void Main(string[] args) { IMessageBus messageBus = new RabbitMQMessageBus("guest", "guest", "FoundatioQueue", "FoundatioQueueRoutingKey", "FoundatioExchange", true, true, false, false, null, TimeSpan.FromMilliseconds(50)); Console.WriteLine("Subscriber...."); messageBus.Subscribe<string>(msg => { Console.WriteLine(msg); }); Console.ReadLine(); }
public async Task CanPersistAndNotLoseMessages() { Log.MinimumLevel = LogLevel.Trace; var messageBus1 = new RabbitMQMessageBus(o => o .ConnectionString("amqp://localhost:5673") .LoggerFactory(Log) .SubscriptionQueueName($"{_topic}-offline") .IsSubscriptionQueueExclusive(false) .SubscriptionQueueAutoDelete(false) .AcknowledgementStrategy(AcknowledgementStrategy.Automatic)); var countdownEvent = new AsyncCountdownEvent(1); var cts = new CancellationTokenSource(); await messageBus1.SubscribeAsync <SimpleMessageA>(msg => { _logger.LogInformation("[Subscriber1] Got message: {Message}", msg.Data); countdownEvent.Signal(); }, cts.Token); await messageBus1.PublishAsync(new SimpleMessageA { Data = "Audit message 1" }); await countdownEvent.WaitAsync(TimeSpan.FromSeconds(5)); Assert.Equal(0, countdownEvent.CurrentCount); cts.Cancel(); await messageBus1.PublishAsync(new SimpleMessageA { Data = "Audit message 2" }); cts = new CancellationTokenSource(); countdownEvent.AddCount(1); await messageBus1.SubscribeAsync <SimpleMessageA>(msg => { _logger.LogInformation("[Subscriber2] Got message: {Message}", msg.Data); countdownEvent.Signal(); }, cts.Token); await countdownEvent.WaitAsync(TimeSpan.FromSeconds(5)); Assert.Equal(0, countdownEvent.CurrentCount); cts.Cancel(); await messageBus1.PublishAsync(new SimpleMessageA { Data = "Audit offline message 1" }); await messageBus1.PublishAsync(new SimpleMessageA { Data = "Audit offline message 2" }); await messageBus1.PublishAsync(new SimpleMessageA { Data = "Audit offline message 3" }); messageBus1.Dispose(); var messageBus2 = new RabbitMQMessageBus(o => o .ConnectionString("amqp://localhost:5673") .LoggerFactory(Log) .SubscriptionQueueName($"{_topic}-offline") .IsSubscriptionQueueExclusive(false) .SubscriptionQueueAutoDelete(false) .AcknowledgementStrategy(AcknowledgementStrategy.Automatic)); cts = new CancellationTokenSource(); countdownEvent.AddCount(4); await messageBus2.SubscribeAsync <SimpleMessageA>(msg => { _logger.LogInformation("[Subscriber3] Got message: {Message}", msg.Data); countdownEvent.Signal(); }, cts.Token); await messageBus2.PublishAsync(new SimpleMessageA { Data = "Another audit message 4" }); await countdownEvent.WaitAsync(TimeSpan.FromSeconds(5)); Assert.Equal(0, countdownEvent.CurrentCount); messageBus2.Dispose(); }