문제

여기 누군가가 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를 얻는 가장 좋은 방법 일 것입니다.

다른 팁

글쎄, 문제는 해결되었습니다. 시간이 걸렸지 만 Andy White가 보낸 게시물의 도움으로 나는 그것을 얻고 내가 원하는 방식으로 실행할 수있었습니다.

문제는 물론 현재 라이브러리가 이용할 수 있다는 것이 었습니다. http://svn.apache.org/viewvc/activemq/activemq-dotnet/ 단순히 부서지고 전혀 작동하지 않습니다.

앤디 감사합니다!

"메시지 큐에서 메시지를 보내고 받기 위해 크기가 25MB 이상인 프레임 워크를 사용하는 것이 과잉으로 보인다"고 주석에 응답하기 위해.

확실히 동의하고 실제로 포장 문제입니다. .NET 1.1 ~ 3.0 (.pdbs) 참조 문서, 샘플 앱 등의 디버그 및 릴리스 빌드를위한 편집 된 바이너리를 포함합니다. .dlls 크기를 보면 activemq nms 기반 Spring.net 앱을 만들어야합니다.

CORMON.LOGGING 28KB, SPRING.AOP 152KB, SPRING.CORE 744KB, SPRING.DATA 340KB 및 SPRING.MESSAGING.NNS 104KB ~ 1.4MB.

표시

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top