0

Apache Qpid Java ブローカーの M4 リリースを Windows ボックスにインストールし、すぐに使用できる構成を使用して (qpid-server.bat スクリプトを介して) 開始しました。

現在、RabbitMQ C# クライアント ライブラリ (バージョン 1.5.3、.NET 3.0 用にコンパイル) を使用してキューにメッセージを発行しようとしています。私のコードは次のとおりです。

public void PublishMessage(string message)
{
    ConnectionFactory factory = new ConnectionFactory();
    factory.Parameters.VirtualHost = "...";
    IProtocol protocol = Protocols.FromEnvironment();
    using (IConnection conn = factory.CreateConnection(protocol, "localhost", 5672))
    {
        using (IModel ch = conn.CreateModel())
        {
            string exchange = "...";
            string routingKey = "...";
            ch.BasicPublish(exchange, routingKey, null, Encoding.UTF8.GetBytes(message));
        }
    }
}

基本的にfactory.Parameters.VirtualHost、文字列exchangeroutingKey. さまざまな組み合わせを試しましたが、何もうまくいかないようです。最も近いのは、Qpid サーバー ログで次のように表示されることです。

2009-03-19 17:11:04,248 WARN  [pool-1-thread-1] queue.IncomingMessage (IncomingMessage.java:198) - MESSAGE DISCARDED: No routes for message - Message[(HC:896033 ID:1 Ref:1)]: 1; ref count: 1

Qpid サーバーがメッセージを受信して​​いるように見えますが、どうすればよいかわかりません。

クライアント コードで必要な構成値に関するアドバイスがあれば (virtualhosts.xml でデフォルトの Qpid 構成を使用していることを念頭に置いて) いただければ幸いです。仮想ホスト、エクスチェンジ、キュー、ルーティング キー、および Qpid がそれらをすべてリンクする方法に関する一般的な情報も非常に役立ちます。

前もって感謝します、

アラン

4

1 に答える 1

6

参考までに、私は最終的にこれを機能させることができました。以下のコードは、localhost 仮想ホスト上の test.direct 交換のキュー test-queue にメッセージを送信します (すべてデフォルトの Qpid ブローカー構成の一部です)。

public void PublishMessage(string message)
{
    ConnectionFactory factory = new ConnectionFactory();
    factory.Parameters.VirtualHost = "/localhost";
    IProtocol protocol = Protocols.AMQP_0_8_QPID;
    using (IConnection conn = factory.CreateConnection(protocol, "localhost", 5672))
    {
        using (IModel ch = conn.CreateModel())
        {
            ch.ExchangeDeclare("test.direct", "direct");
            ch.QueueDeclare("test-queue");
            ch.QueueBind("test-queue", "test.direct", "TEST", false, null);
            ch.BasicPublish("test.direct", "TEST", null, Encoding.UTF8.GetBytes(message));
        }
    }
}
于 2009-03-23T10:43:14.603 に答える