2017-12-26 17 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); 
関連する問題