繁体   English   中英

没有Spring.NET的Apache ActiveMQ访问

[英]Apache ActiveMQ access without Spring.NET

我希望这里有人能够帮助我与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的最佳和最简便的方法。

只是为了回应评论“使用大小超过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。

标记

好了,问题解决了。 花了一段时间,但是在Andy White发送的帖子的帮助下,我得以按照我想要的方式启动并运行它。

问题当然是当前在http://svn.apache.org/viewvc/activemq/activemq-dotnet/上提供的那些库只是被破坏了,根本无法使用。

谢谢安迪!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM