我希望有人在这里将能够从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。

其他提示

好了,问题就解决了。过了一段时间,但与安迪·怀特送到我能得到它,并运行只是我想要的方式后的帮助。

问题是当然的,目前位于 HTTP这些库:// SVN .apache.org / viewvc / ActiveMQ的/ ActiveMQ的-DOTNET / 被简单地断裂,并且不在所有的工作。

感谢您安迪!

只是为了回应注释“这似乎矫枉过正,使用框架的大小超过25MB刚刚从/到消息队列发送和接收消息。”

我当然同意,这是一个真正的包装问题,我们包括通过3.0编译.NET 1.1二进制(调试和发布版本与.pdbs)参考文档,示例应用程序,等等。如果你看一下大小,你所需要的.DLL文件创建一个基于ActiveMQ的NMS Spring.NET的应用程序,是

Common.Logging 28KB,Spring.Aop 152KB,744KB Spring.Core,Spring.Data 340KB和104KB Spring.Messaging.Nns为总共〜1.4MB。

标记

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top