JMSパフォーマンスに関しては、パフォーマンス上の理由からObjectMessageを避けるべきであることを読んでいます。JMSパフォーマンス:BytesMessage vs ObjectMessage
ObjectMessageのパフォーマンスはどれくらいですか? BytesMessageにシリアル化して手動でデシリアライズする必要がありますか?
JMSパフォーマンスに関しては、パフォーマンス上の理由からObjectMessageを避けるべきであることを読んでいます。JMSパフォーマンス:BytesMessage vs ObjectMessage
ObjectMessageのパフォーマンスはどれくらいですか? BytesMessageにシリアル化して手動でデシリアライズする必要がありますか?
ObjectMessage
のパフォーマンスオーバーヘッドは、java.io
のシリアル化プロセスのためです。あなた自身がそれを行い、ByteMessage
を使用するならば、あなたはJMSが行うことをやっているだけです。
JMS経由でJavaオブジェクトを送信する必要がある場合は、APIが提供するものであるObjectMessage
を使用する必要があります。これにより、コンテナはいくつかの最適化を行うことができます。 JBossは標準のjava.io
よりかなり高速な独自のシリアル化プロトコルを使用します。この場合
そうBytesMessageは、最大50%高速化、小型JDKのシリアライズを超えることはできジャクソンスマイルデータ・フォーマットを使用した例のObjectMessageを負かす事になります:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.smile.SmileFactory;
import com.fasterxml.jackson.dataformat.smile.SmileGenerator;
import org.springframework.jms.core.MessageCreator;
import javax.jms.BytesMessage;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
public class BytesMessageCreator<T> implements MessageCreator
{
public static final ObjectMapper
MAPPER=new ObjectMapper(new SmileFactory().disable(SmileGenerator.Feature.ENCODE_BINARY_AS_7BIT));
final String messageId;
final T pojo;
public BytesMessageCreator(final T pojo)
{
messageId=null;
this.pojo=pojo;
}
public BytesMessageCreator(final String messageId, final T pojo)
{
this.messageId=messageId;
this.pojo=pojo;
}
@Override
public Message createMessage(final Session session) throws JMSException
{
try{
final BytesMessage message=session.createBytesMessage();
message.writeBytes(MAPPER.writeValueAsBytes(pojo));
if(messageId != null){
message.setJMSMessageID(messageId);
}
return message;
} catch(Exception e){
throw new RuntimeException(e);
}
}
}
は、あなたが問題に遭遇したことがありますか?あなたは2つのベンチマークをしましたか?これは実際にアプリケーションの中で最も遅い部分ですか? –
いいえ、私は実際にはベンチマークしていません。私はかなりの量のコードを書き直しており、問題があることを認識するためだけに1つの方法を頭を下げたくありませんでした。私の研究を最初にしたいと思った。 私はこの9歳のスレッドに出会い、新しいものは見ていませんでした:http://www.mail-archive.com/[email protected]/msg07681.html 何か聞きたいと思っていましたより権威ある – Tazzy531