メッセージングフレームワークの構築を開始し、JMSMessageの作成にデコレーションパターンを使用することにしました。
class BaseMessage implements Message { ... }
抽象的な装飾
class AbstractDecoration implements Message {
Message message;
public AbstractDecoration(Message message) {
this.message = message
}
}
装飾例:
class JsonPayloadDecoration extends AbstractDecoration { ... }
使用例:
...
IMessage m = new BaseMessage(...);
m = new ExpireDecoration(m, 10, TimeUnit.MINUTES);
m = new TextPayloadDecoration(m, "Text!");
m = new CorrelationDecoration(m, "123456");
m = new PriorityDecoration(m, 9);
m = new NonPersistentDecoration(m);
m = new QueueDestinationDecoration(m, "JMSTEST.DECORATIONTEST1");
m = new ErrorHandlerDecoration(m, errorhandler, 1000);
// requestor handles MessageProducers
// m.send will create the real JMSMessage and use the requestor
// to send the message with a MessageProducer
m.send(requestor);
最初に、装飾のアイデア全体についていくつかの意見を聞きたいと思います。次に、私の本当の質問に答えたいと思います。errorhandler
ofErrorHandlerDecoration
にはタイムアウトがあります。timeout
いつ始めるべきですか?いつ作成されたのですか、それともいつm.send
呼び出されたのですか?私はそれについて同僚と議論しています。