我希望这里有人能够帮助我与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(从其网站上重新下载)。
最佳答案
我尝试了与您在这里完全一样的东西,它似乎起作用了。 Intraweb上的某个人响应了您在Nabble上的请求,该请求已修复一个错误(在哪里?)。也许下载最新版本的Apache.NMS / Apache.NMS.ActiveMQ,然后重试。
Apache.NMS随附Spring.NET-这可能是获得Apache.NMS的最佳和最简单的方法。