Je n'entrerai pas dans les détails sur ce qu'est RabbitMQ et comment l'installer. Baidu vous en parlera, mais vous devez faire plus attention à la configuration.
Sans plus tarder, commençons par un exemple de code simple
Expéditeur :
ConnectionFactory factory = new ConnectionFactory { HostName = "hostname", UserName = "root", Password = "root001", VirtualHost = "hostserver" }; using (IConnection conn = factory.CreateConnection()) { using (IModel im = conn.CreateModel()) { im.ExchangeDeclare("rabbitmq_route", ExchangeType.Direct); im.QueueDeclare("rabbitmq_query", false, false, false, null); im.QueueBind("rabbitmq_query", "rabbitmq_route", ExchangeType.Direct, null); for (int i = 0; i < 1000; i++) { byte[] message = Encoding.UTF8.GetBytes("Hello Lv"); im.BasicPublish("rabbitmq_route", ExchangeType.Direct, null, message); Console.WriteLine("send:" + i); } } }
Destinataire :
ConnectionFactory factory = new ConnectionFactory { HostName = "hostname", UserName = "root", Password = "root001", VirtualHost = "hostserver" }; using (IConnection conn = factory.CreateConnection()) { using (IModel im = conn.CreateModel()) { while (true) { BasicGetResult res = im.BasicGet("rabbitmq_query", true); if (res != null) { Console.WriteLine("receiver:"+UTF8Encoding.UTF8.GetString(res.Body)); } } } }
Envoyez mille envois un à la fois, le processus d'envoi est rapide et il est relativement lent lors de la réception.
Il suffit d'y mettre fin.
distribution cyclique de RabbitMQ.
Comme brièvement mentionné ci-dessus, lorsqu'il y a plusieurs récepteurs, en raison de la distribution circulaire, le message est presque partagé entre les deux récepteurs.
Alors comment diffuser le même message à plusieurs destinataires. <发> Modifiez le code de fin d'envoi :
Par rapport à la méthode ci-dessus, vous constaterez qu'il y a deux sections de code après l'annotation du code après utilisation. En mode Fanout, il n'est pas nécessaire de spécifier le nom de la file d'attente. Une pause d'une seconde a pour but de faciliter la visualisation des résultats et d'éviter un rafraîchissement trop rapide. Jetons un coup d'œil au code du récepteur :
Lorsqu'un nouveau récepteur Lors de la connexion (consommateur), un nouveau doit être déclaré File d'attente, commentaire 1 code, RabbitMQ en générera automatiquement un si vous ne spécifiez pas de nom lors de la déclaration d'une file d'attente, ce qui est bien.
ConnectionFactory factory = new ConnectionFactory { HostName = "hostname", UserName = "root", Password = "root001", VirtualHost = "host" }; using (IConnection conn = factory.CreateConnection()) { using (IModel im = conn.CreateModel()) { im.ExchangeDeclare("rabbitmq_route_Fanout", ExchangeType.Fanout);// 路由 int i = 0; while (true) { Thread.Sleep(1000); ++i; byte[] message = Encoding.UTF8.GetBytes(i.ToString()); im.BasicPublish("rabbitmq_route_Fanout", "", null, message); Console.WriteLine("send:" + i.ToString()); } } }
Quant aux inconvénients de la méthode de diffusion, vous le saurez après l'avoir exécutée vous-même
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!