2

.NET クライアントから ActiveMQ に接続しようとしています。ActiveMQ サーバーが稼働中です。ブラウザから管理コンソールにアクセスできます。

次のコードを実行すると、NMSCOnnctionFactory を作成しようとすると例外が発生します。なぜこれが起こっているのか、それを修正する方法はわかりません。さまざまなポートを試しましたが、それが問題のようです。何か案は?

"No IConnectionFactory implementation found for connection URI: amqp://localhost:61616/"

public static void Main(string[] args)
{
  try
  {
    Uri connecturi = new Uri("amqp://localhost:61616");

    Console.WriteLine("About to connect to " + connecturi);

    IConnectionFactory factory = new NMSConnectionFactory(connecturi, "Bob", "protocol:" +   "amqp1.0");
  }
  catch (Exception e)
  {
    Console.WriteLine("Exception {0}.", e);
  }
}
4

3 に答える 3

0

ティムが述べたように、現在のリリースでは AMQP はサポートされていません。ただし、元のコード スニペットは、構成ファイルをプロジェクトに追加することによって (特定のプロバイダー実装アセンブリにリンクする必要なく) 機能します。nmsprovider-amqp.config次の内容で、ファイルに名前を付けます。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <provider assembly="Apache.NMS.AMQP.dll" classFactory="Apache.NMS.AMQP.ConnectionFactory"/>
</configuration>

このファイルを配置すると、Apache.NMS.dllコンパイル時にアセンブリを参照するだけで済みます。オブジェクトがインスタンス化されると、NMSConnectionFactory既知のプロトコルの実装プロバイダーをロードしようとします。接続 URI に不明なプロトコル ( amqp:など) が指定されている場合は、形式に従ってファイル名を探しますnmsprovider-{protocol}.config。そのファイルを読み込んで、アセンブリとクラス ファクトリ名を見つけます。これにより、メインの NMS ライブラリを実行時に新しいプロバイダーの実装で拡張できます。

于 2014-04-23T19:51:02.527 に答える