2017-12-26 26 views
1

ActiveMQ를 통해 거대한 파일을 보내야하는데 그 이유는 for Large message이라는 설명서를 따르기는했지만에 파일을 채우는 중 오류 이 발생했습니다. 내 질문은ActiveMq에서 파일 문자열 보내기 및 받기 5.15.2

는 pom.xml 파일

  BytesMessage message = session.createBytesMessage(); 
      FileInputStream fileInputStream = new FileInputStream(txFile); 
      BufferedInputStream bufferedInput = new BufferedInputStream(fileInputStream); 
      message.setObjectProperty("JMS_AMQ_InputStream", bufferedInput); 
      producer.send(message); 

ActiveMQ를 5.15.2에 파일을 전송하기위한 올바른 접근 방식이란

<dependency> 
     <groupId>org.apache.activemq</groupId> 
     <artifactId>activemq-all</artifactId> 
     <version>5.15.2</version> 
    </dependency> 

예외 :

Caught: javax.jms.MessageFormatException: Only objectified primitive objects, String, Map and List types are allowed but was: [email protected] type: class java.io.BufferedInputStream 
javax.jms.MessageFormatException: Only objectified primitive objects, String, Map and List types are allowed but was: [email protected] type: class java.io.BufferedInputStream 
at org.apache.activemq.command.ActiveMQMessage.checkValidObject(ActiveMQMessage.java:538) 
at org.apache.activemq.command.ActiveMQMessage.setObjectProperty(ActiveMQMessage.java:504) 
at org.apache.activemq.command.ActiveMQMessage.setObjectProperty(ActiveMQMessage.java:488) 
at org.apache.activemq.command.ActiveMQBytesMessage.setObjectProperty(ActiveMQBytesMessage.java:918) 
at com.svm.mq.test.Producer.run(Producer.java:80) 
at java.lang.Thread.run(Thread.java:745)` 

답변

0

코드는 (즉 "JMS_AMQ_InputStream"개체 속성을 설정하면)에 ActiveMQ를 아르테미스 코어 클라이언트입니다. ActiveMQ 5.x에서는 작동하지 않습니다.

ActiveMQ 5.x로 큰 메시지를 "보내려면"다른 사용자가 기록한대로 "blob"메시지를 사용해야합니다. 그러나 여전히 다른 방법을 사용하여 실제 메시지를 보내야합니다. "blob"메시지는 실제로 메시지에 대한 포인터 또는 참조의 일종입니다.

0

블롭 메시지 당신이가는 길입니다. 자세한 내용은이 link을 시도해보십시오 붙여 넣은

BlobMessage message = session.createBlobMessage(new File("/foo/bar"); 
producer.send(message);