2

ここにいる誰かが、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サイトからの新規ダウンロード)を使用しています。

4

3 に答える 3

1

「メッセージキューとの間でメッセージを送受信するためだけに、サイズが 25MB を超えるフレームワークを使用するのはやり過ぎのようです」というコメントに応答するだけです。

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

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

マーク

于 2010-09-22T02:42:55.973 に答える
1

さて、問題は解決しました。しばらく時間がかかりましたが、Andy White が送った投稿の助けを借りて、思い通りに起動して実行することができました。

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

アンディありがとう!

于 2009-03-13T10:54:03.277 に答える