2016-08-29 3 views
1

Я использую Camel с весной Boot. Во время реализации маршрута обслуживания, который в основном регистрирует тело сообщения, я видел ошибку, которая похожа ниже.Camel complex type to string typeconverter error

No converter found capable of converting from type [com.example.Book] to type [java.lang.String] 

Мой Маршрут:

from(REST_ENDPOINT_URI) 
    .log("${headers}") 
    .log("${body}") 

и я получаю сообщение об ошибке в строке тела журнала.

Мой вопрос в том, что ожидаемое поведение? Почему Camel не вызывает метод toString объекта Book. А также, если это ожидаемое поведение, мне нужен строковый конвертер для каждого нового сложного типа?

+0

Вы попробовали .log ("$ {body.toString}")? Предполагается, что определена команда toString(). –

ответ

0

Можете ли вы создать исполняемый пример, который воспроизводит проблему? Это определенно сценарий, который обрабатывает Верблюд, вызывая toString.

Например, вы можете проверить его:

@Component 
public class DemoRouteBuilder extends RouteBuilder { 


    @Override 
    public void configure() throws Exception { 
    from("timer:sender?delay=5s&period=3s") 
     .setBody(constant(new Book("Lord of the Rings", "J.R.R. Tolkien"))) 
     .log("${body}!"); 
    } 

    public static class Book { 
    private final String title; 
    private final String author; 

    public Book(String title, String author) { 
     this.title = title; 
     this.author = author; 
    } 

    @Override 
    public String toString() { 
     return "Book{" + 
      "title='" + title + '\'' + 
      ", author='" + author + '\'' + 
      '}'; 
    } 
    } 
} 

Это приводит следующий вывод:

2016-08-30 11: 57: 49,802 INFO 8778 --- [таймер : // отправитель] route1: Книга {title = 'Властелин колец', автор = 'JRR Толкиена}!

2016-08-30 11: 57: 52.792 INFO 8778 --- [таймер: // отправитель] route1: Книга {title = 'Властелин колец', автор = 'J.R.R. Толкиена}!

2016-08-30 11: 57: 55.795 INFO 8778 --- [таймер: // отправитель] route1: Книга {title = 'Властелин колец', автор = 'J.R.R. Толкиена}!