.net 消费消息 plaintext using System; using System.Collections.Immutable; using System.Drawing; using Rabbit.Common.Data.Trades; using Rabbit.Common.Display; using RabbitMQ.Client; using RabbitMQ.Client.Events; namespace Rabbit.Example4.Consumer { internal sealed class Program { private static void Main() { var connectionFactory new ConnectionFactory { HostName "YOUR HOST IP", UserName "YOUR USER", Password "YOUR PASSWORD", Port 5672 }; using var connection connectionFactory.CreateConnection(); using var channel connection.CreateModel(); const string ExchangeName "dotnetexchange"; const string QueueName "dotnetqueue"; channel.ExchangeDeclare( exchange: ExchangeName, type: ExchangeType.Direct, durable: false, autoDelete: false, arguments: ImmutableDictionary .Empty); var queue channel.QueueDeclare( queue: QueueName, durable: false, exclusive: false, autoDelete: false, arguments: ImmutableDictionary .Empty); channel.QueueBind( queue: queue.QueueName, exchange: ExchangeName, routingKey: QueueName); var consumer new EventingBasicConsumer(channel); consumer.Received + (sender, eventArgs) > { var messageBody eventArgs.Body.ToArray(); var trade Trade.FromBytes(messageBody); DisplayInfo .For(trade) .SetExchange(eventArgs.Exchange) .SetQueue(queue.QueueName) .SetRoutingKey(eventArgs.RoutingKey) .SetVirtualHost(connectionFactory.VirtualHost) .Display(Color.Yellow); channel.BasicAck(eventArgs.DeliveryTag, multiple: false); }; channel.BasicConsume( queue: queue.QueueName, autoAck: false, consumer: consumer); Console.ReadLine(); } } } ssl生产消息 plaintext using System.Collections.Generic; using System.Collections.Immutable; using System.Drawing; using System.Threading.Tasks; using Rabbit.Common.Data.Trades; using Rabbit.Common.Display; using RabbitMQ.Client; namespace Rabbit.dotnet.Producer { internal sealed class Program { private static async Task Main() { var connectionFactory new ConnectionFactory { HostName "YOUR HOST IP", UserName "YOUR USERNAME", Password "YOUR PASSWORD", Port 5671 }; connectionFactory.AuthMechanisms new List () { new ExternalMechanismFactory() }; connectionFactory.Ssl.CertPath @"D:tmphzmqtest0520rabbitmqsslclientclientrabbitmqkey.p12"; // Ssl.CertPassphrase为固定参数,无需修改 connectionFactory.Ssl.CertPassphrase "YOUR PASSPHRASE"; connectionFactory.Ssl.Enabled true; connectionFactory.Ssl.CertificateValidationCallback (, , , ) > { return true; }; using var connection connectionFactory.CreateConnection(); using var channel connection.CreateModel(); const string ExchangeName "dotnetexchange"; const string QueueName "dotnetqueue"; channel.ExchangeDeclare( exchange: ExchangeName, type: ExchangeType.Direct, durable: false, autoDelete: false, arguments: ImmutableDictionary .Empty); var queue channel.QueueDeclare( queue: QueueName, durable: false, exclusive: false, autoDelete: false, arguments: ImmutableDictionary .Empty); channel.QueueBind( queue: queue.QueueName, exchange: ExchangeName, routingKey: QueueName, arguments: ImmutableDictionary .Empty); while (true) { var trade TradeData.GetFakeTrade(); string routingKey QueueName; channel.BasicPublish( exchange: ExchangeName, routingKey: routingKey, body: trade.ToBytes() ); DisplayInfo .For(trade) .SetExchange(ExchangeName) .SetRoutingKey(routingKey) .SetVirtualHost(connectionFactory.VirtualHost) .Display(Color.Cyan); await Task.Delay(millisecondsDelay: 1000); } } } }