【发布时间】:2013-03-13 09:26:56
【问题描述】:
我开始构建一个消息传递框架,我决定使用装饰模式来创建 JMSMessages。
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);
起初,我想了解一下整个装修的想法,现在是我真正的问题。 ErrorHandlerDecoration 的 errorhandler 有超时。 timeout 应该什么时候开始?何时创建或何时调用m.send?我正在和我的同事争论这个问题。
【问题讨论】:
标签: java design-patterns timeout decorator messaging