سؤال

وأنا على أمل أن شخص ما هنا يكون قادرا على مساعدة لي مع كفاحي مع التكامل مع ActiveMQ من C #. وهنا ما فعلته حتى الآن:

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

لا أحد لديه أي فكرة عما يحدث؟ أنا باستخدام أباتشي ActiveMQ النسخة 5.2.0 (تنزيل الطازجة من موقع على شبكة الإنترنت).

هل كانت مفيدة؟

المحلول

وحاولت الشيء نفسه بالضبط لديك هنا، ويبدو للعمل. رد شخص ما على intraweb لطلبك على Nabble أن هناك علة (أين؟) التي كانت ثابتة. ربما تحميل أحدث إصدار من Apache.NMS / Apache.NMS.ActiveMQ وحاول مرة أخرى.

وApache.NMS يأتي مع Spring.NET - وهذا على الارجح أفضل وأسهل طريقة ل الحصول على Apache.NMS.

نصائح أخرى

حسنا، يتم حل المشكلة. استغرق الأمر بعض الوقت ولكن مع مساعدة من هذا المنصب الذي أرسل آندي وايت وكنت قادرا على الحصول عليها وتشغيلها فقط الطريقة التي أردت.

وكانت المشكلة بالطبع أن هذه المكتبات المتاحة في الوقت الراهن HTTP: // إس .apache.org / viewvc / activemq / activemq-DOTNET / ببساطة مكسورة ولا تعمل على الإطلاق.

وشكرا اندي!

وفقط للرد على التعليق "يبدو مبالغة في استخدام الإطار الذي انتهى 25MB في الحجم فقط لإرسال واستقبال الرسائل من / إلى قائمة انتظار الرسالة."

وأنا بالتأكيد توافق وأنها هي حقا مسألة التعبئة والتغليف، ونحن تشمل ثنائيات ل.NET Framework 1.1 جمعت خلال 3.0 (تصحيح وإطلاق يبني مع .pdbs) مستندات مرجعية، التطبيقات عينة، وهلم جرا. إذا نظرتم الى حجم .dlls تحتاج إلى إنشاء التطبيق Spring.NET ActiveMQ NMS يقوم هو

وCommon.Logging 28KB، Spring.Aop 152KB، Spring.Core 744KB، Spring.Data 340KB، وSpring.Messaging.Nns 104KB لما مجموعه ~ 1.4MB.

الأقسام

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top