我有两个队列,其中包含相同类型的对象。我想通过java DSL将它们聚合到一个队列中。谁能告诉我这是否可能?如果是这样,任何代码引用?
答案 0 :(得分:0)
我相信使用Content Enricher模式在Camel中可能会这样做。
具体来说,以下范例可用于从一个队列中检索消息(其中 direct:start ),并使用来自第二个队列的消息(其中 direct:resource)对其进行丰富是)。然后,可以在 AggregationStrategy 实现类中构建组合消息。
// vars
var pageLoaded = false,
model = null;
// functions
function anadirEquipo () {
var cantidad = +document.getElementById('cantidad').value || 1,
selected = model.inventory.options[model.inventory.selectedIndex],
choice;
if (pageLoaded) {
if (+selected.value !== 0) {
model.quantity.value = +model.quantity.value + cantidad;
while (cantidad-- > 0) {
choice = document.createElement('option');
choice.text = selected.text;
choice.value = selected.value;
model.equipos.add(choice);
}
}
}
}
function retirarEquipos () {
var options = model.equipos.options,
i;
if (pageLoaded) {
for (i = 0; i < options.length; i) {
if (options[i].selected) {
model.equipos.remove(options[i]);
model.quantity.value--;
} else {
i++;
}
}
}
}
// init
window.onload = function () {
model = {
inventory: document.getElementById('inventory'),
equipos: document.getElementById('equipos'),
quantity: document.getElementById('quantity')
};
pageLoaded = true;
};
答案 1 :(得分:0)
如果我理解你的问题,就可以做这样的事情 如果你只需要将它们驱动到一条路线(没有任何聚合,丰富等),你可以继续这段代码:
from('direct:queue1')
.to('direct:start');
from('direct:queue2')
.to('direct:start');
from('direct:start')
//there goes your processing
如果您以后需要聚合它们,请使用Aggregator。或者你可以使用java-addict301的答案来解决你的问题。