質問

ここの誰かが、C#のActiveMQとの統合に苦労しているのを助けてくれることを望んでいます。これまでにやったことは次のとおりです。

using Apache.NMS;
using Apache.NMS.ActiveMQ;
namespace JMSTest {
  class Program {
    static void Main(string[] args) {
      IConnectionFactory factory = new ConnectionFactory("tcp://localhost:61616/");
      IConnection connection = factory.CreateConnection();
      ISession session = connection.CreateSession();
    }
  }
}

かなり基本的なもの:接続ファクトリを作成し、それを使用して接続を作成し、最後にセッションを作成します。このコードを実行すると、スローされる例外が発生します。

System.ArgumentOutOfRangeException: Index and length must refer to a location within the string.
Parameter name: length
   at System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)
   at System.String.Substring(Int32 startIndex, Int32 length)
   at Apache.NMS.ActiveMQ.OpenWire.StringPackageSplitter.StringPackageSplitterEnumerator.System.Collections.IEnumerator.get_Current()
   at Apache.NMS.ActiveMQ.OpenWire.OpenWireBinaryWriter.Write(String text)
   at Apache.NMS.ActiveMQ.OpenWire.BaseDataStreamMarshaller.LooseMarshalString(String value, BinaryWriter dataOut)
   at Apache.NMS.ActiveMQ.OpenWire.V2.ConnectionIdMarshaller.LooseMarshal(OpenWireFormat wireFormat, Object o, BinaryWriter dataOut)
   at Apache.NMS.ActiveMQ.OpenWire.OpenWireFormat.LooseMarshalNestedObject(DataStructure o, BinaryWriter dataOut)
   at Apache.NMS.ActiveMQ.OpenWire.BaseDataStreamMarshaller.LooseMarshalCachedObject(OpenWireFormat wireFormat, DataStructure o, BinaryWriter dataOut)
   at Apache.NMS.ActiveMQ.OpenWire.V2.ConnectionInfoMarshaller.LooseMarshal(OpenWireFormat wireFormat, Object o, BinaryWriter dataOut)
   at Apache.NMS.ActiveMQ.OpenWire.OpenWireFormat.Marshal(Object o, BinaryWriter ds)
   at Apache.NMS.ActiveMQ.Transport.Tcp.TcpTransport.Oneway(Command command) : Transport connection error: Index and length must refer to a location within the string.
Parameter name: length

何が起こっているのか誰にもわかりませんか? Apache ActiveMQバージョン5.2.0を使用しています(Webサイトからの新規ダウンロード)。

役に立ちましたか?

解決

ここにあるものとまったく同じことを試してみましたが、うまくいくようです。イントラウェブの誰かが、修正されたバグ(どこ?)があるというNabbleのリクエストに応答しました。 Apache.NMS / Apache.NMS.ActiveMQの最新バージョンをダウンロードして、もう一度お試しください。

Apache.NMSには Spring.NET が付属しています。これがおそらく最も簡単で簡単な方法です。 Apache.NMSを取得します。

他のヒント

まあ、問題は解決しました。しばらく時間がかかりましたが、アンディ・ホワイトが送った投稿の助けを借りて、思い通りに立ち上げて実行することができました。

もちろん、問題は、現在これらのライブラリが http:// svnで利用可能であることでした.apache.org / viewvc / activemq / activemq-dotnet / は単純に壊れており、まったく機能しません。

アンディ、ありがとう!

コメントに返信するだけ" 25MBを超えるサイズのフレームワークを使用して、メッセージキューとの間でメッセージを送受信するだけではやり過ぎだと思われます

確かに同意します。これは実際にはパッケージングの問題です。.NET1.1〜3.0(.pdbsを使用したデバッグおよびリリースビルド)のリファレンスドキュメント、サンプルアプリなどのコンパイル済みバイナリが含まれています。 ActiveMQ NMSベースのSpring.NETアプリを作成するために必要な.dllのサイズを見ると、

Common.Logging 28KB、Spring.Aop 152KB、Spring.Core 744KB、Spring.Data 340KB、Spring.Messaging.Nns 104KB、合計約1.4MB。

マーク

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top