【发布时间】:2015-01-30 23:36:51
【问题描述】:
如果我在 hornetq 中配置了一个转移(从主题到队列),我希望它尊重消息上设置的任何 TTL。 “默认情况下”似乎不是这种情况。在这种情况下,消息过期将被忽略。
如果我直接发送到队列,那么 ttl 会被兑现。
有没有办法让这种情况动态发生?甚至是静态的(通过转移上的一些配置)?
【问题讨论】:
如果我在 hornetq 中配置了一个转移(从主题到队列),我希望它尊重消息上设置的任何 TTL。 “默认情况下”似乎不是这种情况。在这种情况下,消息过期将被忽略。
如果我直接发送到队列,那么 ttl 会被兑现。
有没有办法让这种情况动态发生?甚至是静态的(通过转移上的一些配置)?
【问题讨论】:
一种方法是提供一个转换器类,使用转移的<transformer-class-name> 属性来重新设置 ttl。一个转换器类可以如下实现。
public class YourTransformer implements Transformer {
public ServerMessage transform(final ServerMessage message)
{
//your code;
}
}
有关示例实现,请查看 HornetQ 服务器随附的默认 HornetQ 示例。
【讨论】: