Верблюд: java.lang.IllegalArgumentException: defaultEndpoint должен быть указан - PullRequest
0 голосов
/ 12 декабря 2018

Я новичок в Apache Camel.Я пытаюсь отправить заголовки вместе с телом запроса на маршрут в Apache Camel.

// headers is a map
APIResponse response = (APIResponse) producer.requestBodyAndHeader("direct:route1",body,headers);

Я получаю следующую ошибку:

java.lang.IllegalArgumentException: defaultEndpoint must be specified
    at org.apache.camel.util.ObjectHelper.notNull(ObjectHelper.java:308)
    at org.apache.camel.impl.DefaultProducerTemplate.getMandatoryDefaultEndpoint(DefaultProducerTemplate.java:462)
    at org.apache.camel.impl.DefaultProducerTemplate.requestBodyAndHeader(DefaultProducerTemplate.java:289)

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Вы, вероятно, перепутали фактический метод для вызова.Вместо того, чтобы вызывать template.requestBodyAndHeaders(String, Object, Map<String, Object>), который вы на самом деле намеревались вызвать, вы, скорее всего, вызывали template.requestBodyAndHeader(Object, String, Object) в том случае, если ваше тело сообщения действительно имело тип String.

В последнем случае будет установлено только одно значение заголовка, ключ является вторым входным параметром, а его значение - третьим параметром.Здесь также, поскольку информация о конечных точках не указана, она будет возвращаться к конечной точке по умолчанию, которая объяснит ошибку, которую вы видите.

0 голосов
/ 12 декабря 2018

Я не совсем уверен, почему это не работает, мне кажется, это нормально.В качестве теста вы можете попробовать разделить конечную точку и посмотреть, работает ли она?

Endpoint endpoint = context.getEndpoint("direct:route1");
producer.setDefaultEndpoint(endpoint);
producer.requestBodyAndHeader(body,headers);

Еще одна вещь, которую вы можете проверить, это попробовать «seda» вместо «direct», поскольку «прямые» конечные точки могутвозникают проблемы, если вы загружаете свои компоненты в смешном порядке (т. е. если потребитель еще не инициализирован, «прямой» конечной точки может не существовать)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...