2012-02-07 4 views
1

私は、(Camelプロデューサテンプレートを使用して)ActiveMQキューにSolrInputDocment(Serializable)を追加しようとしていますが、MessageFormatExceptionを取得しました。ここActiveMQに追加されたときにSolrInputDocumentがMessageFormatExceptionをスローしていますか?

は私のコードです...ここ

SolrInputDocument doc1 = new SolrInputDocument(); 
doc1.addField("id", "1234", 1.0f); 

template.sendBody("activemq:queue:test", doc1); 

は私の誤りである...

Caused by: javax.jms.MessageFormatException: Only objectified primitive objects, String, Map and List types are allowed but was: id(1.0)={1234} type: class org.apache.solr.common.SolrInputField 

UPDATE:問題は、私は明示的に 'オブジェクト' にJMSMessageTypeを設定する必要があるということです、それ以外の場合は、MapMessageが使用されます(カスタムタイプはサポートしていません)。

template.sendBodyAndHeader("activemq:queue:test", doc1, JMS_MESSAGE_TYPE, "Object"); 
+0

http://stackoverflow.com/questions/9115971/bind-a-custom-object-to-a-jms-mapmessage –

答えて

2

メッセージのプロパティにsomあなたは "クリーン" SolrInputDocumentを送信しようとするとどうですか?

乾杯、ユージン。

+0

ありがとう、addField()呼び出しを使用して、それは動作します...奇妙なaddField()を呼び出すと(これはLinkedHashMap すべてSerializableです)、それを破ります。 –

+0

@bodayこの例外がスローされる場所を調べると、そこには身体ではなく、メッセージの性質と関係するので、それは私の最初のヒントでした。だからSerializable私はそれとは何の関係もないと思います。とにかくもしそれが私のアカウントで余分な15をいただければ幸いです:Thx! – Eugene

+0

あなたの入力に感謝します...しかし、私は明示的にプロパティを設定していません...したがって、私の混乱。私は別のPOJOオブジェクトを試してみましたが、うまく動作します...とにかく、その奇妙なエラー –

関連する問題