从队列中获取第一条消息的最简单方法是什么?
鉴于在标题中我没有看到任何东西可以过滤(没有序列号等,至少就我所见),还有什么比这更好的吗?
from("webspheremq:topic:SNAPSHOTS")
.throttle(1).timePeriodMillis(1234567890L * 1000)
.to("direct:anotherqueue")
喜欢camel DSL over beans + java code :)。
修改
实际上是从webspheremq主题中读取的。
EDIT2
不要使用Long.MAX_VALUE
作为时间段!请改用1234567890L * 1000
答案 0 :(得分:1)
您可以尝试使用保持第一状态的单例进行过滤:
public static class FirstOrNot {
private static FirstOrNot _instance;
public synchronized boolean isfirst() {
if ( _instance == null ) {
_instance = new FirstOrNot();
return true;
}
return false;
}
}
FirstOrNot first = new FirstOrNot();
from("webspheremq:topic:SNAPSHOTS")
.filter().method( first , "isFirst" )
.to("direct:anotherqueue")
也许您可以将此作为起点。
干杯,