M Rabbitmq とは何か、そしてそのインストール方法については、Baidu ではすぐにわかりますが、設定に関しては注意してください。直接言うことはあまりありません。まず、簡単なコード例に直接進みます。
送信終了: RConnectionFactory 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); } } }E
受信者:
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)); } } } }
1 回から 1,000 件送信します。受信時の送信プロセスは高速です。受信時、受信時は比較的遅くなります。 D 説明
ループ配布
メカニズムにより、次のメッセージが次の受信者に配布されます。一下 簡単に言うと、受信機が複数の場合、サイクル配信の都合上、ニュースはほぼ2台の受信端末になります。では、同じメッセージを複数の受信者に配信する方法。送信端末コードを変更します:
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()); } } }type のタイプと比較すると、コード アノテーションの後にコードのセクションが 2 つあることがわかります。FANOUT メソッドを設定した後は、キュー名を指定する必要はありません。 。 1 秒間一時停止する目的は、結果を表示しやすくし、あまりにも早く更新しすぎないようにすることです。もう一度受信側のコードを見てみましょう:
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); var queueOk = im.QueueDeclare();//1 im.QueueBind(queueOk.QueueName, "rabbitmq_route_Fanout", "");//2 var consumer = new QueueingBasicConsumer(im);//3 im.BasicConsume(queueOk.QueueName, true, consumer);//4 while (true) {var _result = (BasicDeliverEventArgs)consumer.Queue.Dequeue();//5 var body = _result.Body; var message = Encoding.UTF8.GetString(body); Console.WriteLine("received:{0}", message); } }新しい受信側接続(コンシューマー)の場合、新しいキューを宣言する必要があります。アノテーション1のコード、宣言キューが指定されていない場合は、Rabbitmq指定されていません。名前は自動的に生成されます。これは便利です。 2 つの受信側の操作結果は期待どおりです。
ブロードキャスト方式の欠点については、実際に実行してみるとわかります
_以上がC#でのRabbitMQアプリケーションのグラフィックコードの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。