1

このコードがあり、rabbitmq clientを使用しています。これが非同期か同期か興味がありますか? 同期の場合、どうすれば非同期にできますか?

        ConnectionFactory factory = new ConnectionFactory();
        factory.HostName = "localhost";
        using (IConnection connection = factory.CreateConnection())
        using (IModel channel = connection.CreateModel())
        {
            channel.QueueDeclare("hello", false, false, false, null);
            for (int i = 0; i < 1000; i++)
            {
                string message = "Hello World!";
                byte[] body = System.Text.Encoding.UTF8.GetBytes(message);

                channel.BasicPublish("", "hello", null, body);

            }

        }
4

1 に答える 1

1

公式の C# クライアント ガイドの 2.9 章を参照してください。

アプリケーション コールバック ハンドラーは、ブロッキング AMQP 操作 (IModel.QueueDeclare、IModel.BasicCancel、IModel.BasicPublish など) を呼び出さないでください。その場合、チャネルはデッドロックします

BasicPublish は、同期操作をブロックする私見です。

于 2012-12-05T17:24:01.313 に答える