Исключение конечной точки миграции пользовательских компонентов Apache Camel

#java #apache-camel #apache-camel-cdi

Вопрос:

Привет, я пишу свой собственный компонент camel, и он работает до тех пор, пока я не обновлю версию. Я повысил свою версию 3.1 до 3.2, но получил сообщение об ошибке

  Resolved [org.apache.camel.NoSuchEndpointException: No endpoint could be found for: my-rest-client, please check your classpath contains the needed Camel component jar.]
 

Я проверяю документацию по верблюду, но не совсем понимаю.

https://camel.apache.org/manual/latest/camel-3x-upgrade-guide-3_2.html

Я пытаюсь что-то сделать, но ничего не меняется, Это не работает

   //camelContext.getRestConfiguration("servlet",true); 3.1 code deleted to upgrade 3.2
            CamelContextHelper.getRestConfiguration(camelContext,"servlet"); 3.2
 

Я пытаюсь добавить camel-http,camel-direct в свой pom, но безрезультатно.

 Component("MYClientEndpoint")
@UriEndpoint(scheme = "my-rest-client",title = "my-rest-client",syntax = "my-rest-client")
public class MYClientEndpoint extends DefaultEndpoint {
    @Autowired
    private MYClientProducer MYClientProducer;
    @Override
    public Producer createProducer() {
        return MYClientProducer;
    }

    @Override
    public Consumer createConsumer(Processor processor) {
        throw new UnsupportedOperationException("Operation not supported");
    }

    @Override
    public boolean isSingleton() {
        return true;
    }

    @Override
    public String getEndpointUri() {
        return "my-rest-client";
    }
}
 

Он уже может существовать в контексте моего приложения.Я могу получить доступ, когда подключу его автоматически

Комментарии:

1. Вам необходимо предоставить дополнительную информацию о вашем маршруте и настройке.

2. @LucaBurgazzoli Я добавил определение конечной точки.CamelContext.getEndpoints().add(myRestClientEndpoint); Я пытаюсь добавить вручную. Он прошел этот шаг, но при попытке позвонить производителю send я получил конечную точку nosuch

3. Я бы рекомендовал использовать последнюю версию camel (3.11.x) и создать полный компонент ( camel.apache.org/manual/latest/writing-components.html ) как здесь показано, конечная точка не создается компонентом. Я также рекомендую создать репродуктор.

Ответ №1:

Я нашел ответ, когда изменил возвращаемое значение метода getEndpointUri и приравнял его к своему имени конечной точки, когда он начал работать в camel 3.11.Другой подход-добавить точку в контекст запуска camel с новым именем в начале.

 Component("MYClientEndpoint")
public class MYClientEndpoint

@Override
    public String getEndpointUri() {
        return "my-rest-client";--> I change to  return "MYClientEndpoint"
    }