我尝试使用MessagePostProcessor
的示例在我的消息上添加一个标头x-delay
,但它给了我一个异常,说:
异常错误:MessageHeaders是不可变的
import org.springframework.messaging.Message
import org.springframework.messaging.core.MessagePostProcessor
import org.springframework.stereotype.Component
@Component
class AmpqRoutingKeyStrategy {
private static CUSTOM_DELAY = 120000
MessagePostProcessor get() {
return withDelay(CUSTOM_DELAY)
}
static MessagePostProcessor withDelay(Integer milliSeconds) {
return new MessagePostProcessor() {
@Override
Message postProcessMessage(Message message) {
message.getHeaders().put('x-delay', milliSeconds)
return message
}
}
}
}
上面的例子在很多关于这个主题的文章中都有用到,我知道我们可以选择添加x-delay
头,但是我如何才能在不引发这个异常的情况下添加呢?
1条答案
按热度按时间bxgwgixi1#
documentation表示:
重要事项:此类是不可变的。任何变更操作(如put(..)、putAll(..)和其他操作)都将引发UnsupportedOperationException。
解决方法是重新创建消息: