2014-02-06 3 views
0

Я хочу, чтобы пользовательский процессор верблюда работал как пользовательский компонент. Я читаю его как можно больше от http://camel.apache.org/processor.html - раздел -> Превращение вашего процессора в полноценный компонент. Здесь созданный пользовательский процессор должен будет выполнить задание при вызове someComponent: // action1? Param1 = value1 & param2 = value2 в пути.Использование Camel Processor в качестве настраиваемого компонента

Для этого я создал образец компонента, используя каталог maven. Это создало классы Endpoint, Consumer, Producer и Component.

Ссылка указывает, что компонент должен вернуть ProcessorEndpoint, который я сделал. Таким образом, конечная точка выглядит, как показано ниже

public class SampleEndpoint extends ProcessorEndpoint{ 
// Automatically Generated code begins 
    public Producer createProducer() throws Exception{ 
      return new SampleProducer(this, processor); 
    } 

    public Consumer createConsumer() throws Exception{ 
    throw new UnsupportedOperationException("This operation is not permitted...."); 
} 
// Automatically generated code ends here 

//added below to make custom processor work for custom component 
    public Processor createProcessor(Processor processor){ 
    return new SampleProcessor(); 
    } 
} 

Но вот код в процессоре не получает выполняться вместо кода в SampleProducer запускается на выполнение. Здесь я хочу, чтобы процессор был исключен. Как я это делаю?

ответ

2

При расширении ProcessorEndpoint, производитель от createProducer() будет обрабатывать обмен, т.е. Producer.process (обмен Обмен).

Именно поэтому вы видите Используется SampleProducer. Но если вы хотите передать в процессор, вероятно, можно просто изменить код, чтобы быть:

return new SampleProducer(this, new SampleProcessor()); 

Мой лучший совет должен был бы подключить отладчик и поставить точки останова в своих методах SampleEndpoint, SampleProducer и SampleProcessor, чтобы увидеть, что вызывается и когда.

Смежные вопросы