Camel - расширить Java DSL?

У меня есть повторяющийся шаблон в моих маршрутах - определенному процессору нужно устанавливать одни и те же 3 заголовка каждый раз, когда я его вызываю, поэтому У меня есть следующий код в моих маршрутах около 10+ раз:

.whatever()
.setHeader("foo1", "bar1")
.setHeader("foo2", "bar2")
.setHeader("foo3", "bar3")
.processRef("processorBazThatNeedsHeaders")
.whatever()

Заголовки заполняются каждый раз по-разному, поэтому абстрагирование этого в субмаршрут на самом деле мне ничего не дает.

Что мне нравится, когда я могу иметь такую ​​возможность. нужно сделать подкласс RouteDefinition, чтобы иметь другой метод в моем DSL, который позволил бы мне сделать это:

.whatever()
.bazProcessor("bar1", "bar2", "bar3")
.whatever()

и в 'bazProcessor' установить заголовки и вызвать процессор.

Я пытался сделать это, но похоже что это возможно только с некоторыми серьезными операциями, которые, вероятно, не надежны в будущем, и кажется, что другим повезло .

Мне нужно, чтобы они были установлены как заголовки, а не передавались как pa Параметры непосредственно в процессор, потому что значения также используются после процессора для маршрутизации.

Есть ли какое-то скрытое средство для достижения чего-то вроде этого?

9
задан рüффп 16 January 2017 в 00:17
поделиться