2017-01-24 8 views
0

C# .NET으로 작성된 클라이언트 응용 프로그램과 함께 ActiveMQ 서버로 메시지를 보내려고합니다. . 나는 우편으로 보내고 보내려는 XML 메시지를 가지고있다. 분석 데이터가 같은 예외있어 서버 측에다음과 같은 이유로 몸체를 추출하지 못했습니다 : javax.jms.JMSException : 바이트에서 본문을 작성하지 못했습니다 (보낸 우편함을 ActiveMQ로 추출하지 못했습니다)

public IMessage SendMessage(string mqUri, string brokerUri, MemoryStream message, string username, string password) 
    { 
     Uri connecturi = new Uri(mqUri); 

     IConnectionFactory factory = new NMSConnectionFactory(connecturi); 

     using (IConnection connection = factory.CreateConnection(username, password)) 
     using (ISession session = connection.CreateSession()) 
     { 
      IDestination destination = SessionUtil.GetDestination(session, brokerUri); 

      using (IMessageProducer producer = session.CreateProducer(destination)) 
      { 
       connection.Start(); 
       IBytesMessage request = session.CreateBytesMessage(message.ToArray()); 
       producer.Send(request); 

       return request; 
      } 
     } 
    } 

: JMS 메시지 리스너의

실행에 실패했습니다. 원인 : [org.apache.camel.RuntimeCamelException - 다음으로 인해 본문을 추출하지 못했습니다 : javax.jms.JMSException : 본문을 바이트로 작성하지 못했습니다. 이유 : java.io.StreamCorruptedException : 유효하지 않은 스트림 헤더 : 00010000. 메시지 : ActiveMQObjectMessage. 내가 코드와 설정 브레이크 포인트를 디버깅 할 때

, 'Apache.NMS.MessageNotReadableException'

enter image description here

유형의 예외가 발생했습니다 'request.Content'를 말하는 Bodylength에 대한 예외 및 콘텐츠가있다 ActiveMQ 서버에 메시지를 보낼 수있는 특별한 zip 변환이 있습니까? 도와주세요. 감사합니다

+0

xml을 zip으로 변환하는 이유 ?? 어떤 zip 도구로 zip 파일을 열 수 있습니까? –

답변

0

문제는 나중에 나는 그것이 zipstream하지 zip 파일에 .XML 파일을 변환 할 필요가 발견, MemoryStream을로 압축 변환했다.

public static MemoryStream CreateZipStream() 
    { 
     using (ZipFile zip = new ZipFile()) 
     { 
      MemoryStream outputStream = new MemoryStream(); 
      outputStream.Seek(0, SeekOrigin.Begin); 
      string filePath = 
       @"C:\YourXml.xml"; 
      zip.AddFile(filePath); 
      zip.Save(outputStream); 
      return outputStream; 
     } 
    }