powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Apache Camel
48 сообщений из 48, показаны все 2 страниц
Apache Camel
    #39547055
Natalia_141277
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Что толкового можно почитать по Apache Camel (желательно с примерами)?
Спасибо!
...
Рейтинг: 0 / 0
Apache Camel
    #39547060
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Natalia_141277Всем привет!
Что толкового можно почитать по Apache Camel (желательно с примерами)?
Спасибо!
Официальную доку? Или не пойдет?

Там же примеры ссылка справа
...
Рейтинг: 0 / 0
Apache Camel
    #39547064
Natalia_141277
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
llemingNatalia_141277Всем привет!
Что толкового можно почитать по Apache Camel (желательно с примерами)?
Спасибо!
Официальную доку? Или не пойдет?

Там же примеры ссылка справа

думала, может кроме доки есть еще что-то стоящее:-)
...
Рейтинг: 0 / 0
Apache Camel
    #39547077
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingОфициальную доку? Или не пойдет?

Там же примеры ссылка справаУ них документация несколько оторванная от реальности, т.е. для тривиальных случаев оно еще хоть как-то и может сгодиться, а вот как только встречаешься с практическими задачами, так сразу грусть и печаль.
...
Рейтинг: 0 / 0
Apache Camel
    #39547249
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловllemingОфициальную доку? Или не пойдет?

Там же примеры ссылка справаУ них документация несколько оторванная от реальности, т.е. для тривиальных случаев оно еще хоть как-то и может сгодиться, а вот как только встречаешься с практическими задачами, так сразу грусть и печаль.

я так понял это и есть тот случай у топикстартера, начала
...
Рейтинг: 0 / 0
Apache Camel
    #39548936
imperfekt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Apache Camel
    #39549294
Natalia_141277
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
конкретно интересуют примеры вызова процедур, спасибо!
...
Рейтинг: 0 / 0
Apache Camel
    #39549295
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Natalia_141277конкретно интересуют примеры вызова процедур, спасибо!
О каких процедурах идет речь? Хранимые в БД?

Вы уверены что вы понимаете назначение назначение фреймворка Camel?
...
Рейтинг: 0 / 0
Apache Camel
    #39549298
Natalia_141277
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Camel SQL Stored Component is used to call stored procedures.

http://www.kswaughs.com/2016/09/camel-sql-stored-example.html
...
Рейтинг: 0 / 0
Apache Camel
    #39549394
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Natalia_141277, вот кусок кода из вашего примера. Это взаимодействие Camel интерфейсов и jdbc.
Попробуйте его переделать под вызов хранимок в общем понимании этого слова. Если вам это надо.
Помните, camel это очень высокий уровень абстракций. И ваш вопрос про camel и хранимки очень
странный.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public static void findAllBooks(ResultSet[] bookResults)
            throws SQLException {

        Connection connection = null;
        PreparedStatement statement = null;

        try {
            connection = DriverManager.getConnection("jdbc:default:connection");
            String sql = "select * from books";
            statement = connection.prepareStatement(sql);
            bookResults[0] = statement.executeQuery();
        } finally {
            
            JdbcUtils.closeConnection(connection);
        }

    }
...
Рейтинг: 0 / 0
Apache Camel
    #39549408
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А я с этим верблюдом второй день тра#аюсь - не могу дату в монгу сохранить.

типо как тут,

http://camel.465427.n5.nabble.com/MongoDB-Jackson-Date-Mapping-Option-td5727548.html


но у меня spring-camel и отсылаю я в виде

Код: java
1.
2.
3.
final List<DataPoint> dataPoints = ....
                            producerTemplate.sendBody("mongodb:mongoBean?database=" + mongoDataConfiguration.getDatabase()
                                    + "&createCollection=true&operation=insert&collection=" + mongoDataConfiguration.getDataPointCollection(), dataPoints);



так что где написать

Код: java
1.
2.
.marshal(jackson) 
        .convertBodyTo(String.class) 



хрен разберешь
...
Рейтинг: 0 / 0
Apache Camel
    #39549415
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonNatalia_141277, вот кусок кода из вашего примера. Это взаимодействие Camel интерфейсов и jdbc.
Попробуйте его переделать под вызов хранимок в общем понимании этого слова. Если вам это надо.
Помните, camel это очень высокий уровень абстракций. И ваш вопрос про camel и хранимки очень
странный.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public static void findAllBooks(ResultSet[] bookResults)
            throws SQLException {

        Connection connection = null;
        PreparedStatement statement = null;

        try {
            connection = DriverManager.getConnection("jdbc:default:connection");
            String sql = "select * from books";
            statement = connection.prepareStatement(sql);
            bookResults[0] = statement.executeQuery();
        } finally {
            
            JdbcUtils.closeConnection(connection);
        }

    }



Не вводите в заблуждение, этот кусок вообще отношения к Camel не имеет - это реализация хранимой процедуры для Apache Derby:

авторStored procedure implementation class is BookStoredProcedure. This is Apache Derby's way of implementation, purely written in Java. This has nothing to do with camel.
...
Рейтинг: 0 / 0
Apache Camel
    #39549418
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerтак что где написать

Код: java
1.
2.
.marshal(jackson) 
        .convertBodyTo(String.class) 


хрен разберешьmarshal и convertBodyTo пишут в маршруте, а вы тягаете данные из продюсера, поэтому или сами маршальте, или в маршрут допишите маршалинг, соответственно, sendBody будет String возвращать
...
Рейтинг: 0 / 0
Apache Camel
    #39549436
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Ничего странного в вопросе про хранимые не вижу.
...
Рейтинг: 0 / 0
Apache Camel
    #39549462
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфиловquestionerтак что где написать

Код: java
1.
2.
.marshal(jackson) 
        .convertBodyTo(String.class) 


хрен разберешьmarshal и convertBodyTo пишут в маршруте, а вы тягаете данные из продюсера, поэтому или сами маршальте, или в маршрут допишите маршалинг, соответственно, sendBody будет String возвращать

а можете эти два кейса подетальнее объяснить?

1.Как маршалить самому?
2. Как дописать в маршрут маршаллинг?
...
Рейтинг: 0 / 0
Apache Camel
    #39549509
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class MongoRouteBuilder extends RouteBuilder {

	@Override
	public void configure() throws Exception {
		from("direct:mongo").to("mongodb:mongoBean?database=" + mongoDataConfiguration.getDatabase()
				+ "&createCollection=true&operation=insert&collection="
				+ mongoDataConfiguration.getDataPointCollection()).marshal().convertBodyTo(String.class);
	}

}



Код: xml
1.
2.
3.
4.
5.
    <bean id="mongoRouteBuilder" class="MongoRouteBuilder"/>

    <camel:camelContext id="mongoRoute">
        <camel:routeBuilder ref="mongoRouteBuilder" />
    </camel:camelContext>



Код: java
1.
2.
3.
4.
CamelContext context = springCtx.getBean("mongoRoute", CamelContext.class);
context.start();
ProducerTemplate producerTemplate = context.createProducerTemplate();
String result = producerTemplate.requestBody("direct:mongo", dataPoints);
...
Рейтинг: 0 / 0
Apache Camel
    #39549567
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфиловquestioner,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class MongoRouteBuilder extends RouteBuilder {

	@Override
	public void configure() throws Exception {
		from("direct:mongo").to("mongodb:mongoBean?database=" + mongoDataConfiguration.getDatabase()
				+ "&createCollection=true&operation=insert&collection="
				+ mongoDataConfiguration.getDataPointCollection()).marshal().convertBodyTo(String.class);
	}

}



Код: xml
1.
2.
3.
4.
5.
    <bean id="mongoRouteBuilder" class="MongoRouteBuilder"/>

    <camel:camelContext id="mongoRoute">
        <camel:routeBuilder ref="mongoRouteBuilder" />
    </camel:camelContext>



Код: java
1.
2.
3.
4.
CamelContext context = springCtx.getBean("mongoRoute", CamelContext.class);
context.start();
ProducerTemplate producerTemplate = context.createProducerTemplate();
String result = producerTemplate.requestBody("direct:mongo", dataPoints);



Мне нужно как-то внутри процессора

Код: java
1.
2.
3.
.process(new Processor() {
                    @Override
                    public void process(Exchange exchange) {



я боди внутри собираю и отправляю несколько сообщений из него в монгу
...
Рейтинг: 0 / 0
Apache Camel
    #39549581
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerМне нужно как-то внутри процессора

Код: java
1.
2.
3.
.process(new Processor() {
                    @Override
                    public void process(Exchange exchange) {



я боди внутри собираю и отправляю несколько сообщений из него в монгуНу у вас с ТС одна и та же проблема: не можете объяснить что хочется.
...
Рейтинг: 0 / 0
Apache Camel
    #39549600
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей ПанфиловquestionerМне нужно как-то внутри процессора

Код: java
1.
2.
3.
.process(new Processor() {
                    @Override
                    public void process(Exchange exchange) {



я боди внутри собираю и отправляю несколько сообщений из него в монгуНу у вас с ТС одна и та же проблема: не можете объяснить что хочется.

Да я объясню - легко, просто это не очень поможет решить вопрос.

я слушая sftp папку, обрабатываю файлы из этой папки. По результатам обработки файла у меня получается "фид" для двух коллекций в монге. поэтому я это и делаю в процессоре. Более того, файл после обработки мне нужно ешё и локально сохранить, если он распарсился успешно
...
Рейтинг: 0 / 0
Apache Camel
    #39549610
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу ТС по моему всё очевидно

http://camel.apache.org/sql-stored-procedure.html

Если будут ещё вопросы - можно обсуждать
...
Рейтинг: 0 / 0
Apache Camel
    #39549669
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerДа я объясню - легко, просто это не очень поможет решить вопрос.

я слушая sftp папку, обрабатываю файлы из этой папки. По результатам обработки файла у меня получается "фид" для двух коллекций в монге. поэтому я это и делаю в процессоре. Более того, файл после обработки мне нужно ешё и локально сохранить, если он распарсился успешноApache Camel - это в первую очередь EIP ( http://camel.apache.org/eip.html), а вы бросаетесь сразу код писать. Не увидел в объяснении ничего, чтобы требовало каких-то доп. телодвижений.
...
Рейтинг: 0 / 0
Apache Camel
    #39549712
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей ПанфиловquestionerДа я объясню - легко, просто это не очень поможет решить вопрос.

я слушая sftp папку, обрабатываю файлы из этой папки. По результатам обработки файла у меня получается "фид" для двух коллекций в монге. поэтому я это и делаю в процессоре. Более того, файл после обработки мне нужно ешё и локально сохранить, если он распарсился успешноApache Camel - это в первую очередь EIP ( http://camel.apache.org/eip.html), а вы бросаетесь сразу код писать. Не увидел в объяснении ничего, чтобы требовало каких-то доп. телодвижений.

Возможно Вы знаете что-то, чего не знаю я просто)

Я с кемелом неделю как знакомлюсь в боевых условиях.

Но по-моему вопрос звучит понятно. из process надо сделать роут в монгу. Роут сам по себе работает, но дата в нормальном формате не записывается.

Конкретно тут я не ради фана пытаюсь изучить, а надо задачу реальную решить.
...
Рейтинг: 0 / 0
Apache Camel
    #39549997
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
questionerАндрей Панфиловпропущено...
Apache Camel - это в первую очередь EIP ( http://camel.apache.org/eip.html), а вы бросаетесь сразу код писать. Не увидел в объяснении ничего, чтобы требовало каких-то доп. телодвижений.

Возможно Вы знаете что-то, чего не знаю я просто)

Я с кемелом неделю как знакомлюсь в боевых условиях.

Но по-моему вопрос звучит понятно. из process надо сделать роут в монгу. Роут сам по себе работает, но дата в нормальном формате не записывается.

Конкретно тут я не ради фана пытаюсь изучить, а надо задачу реальную решить.

Что мешает дату преобразовать к нужному виду в процессоре?
Код: java
1.
2.
3.
public void process(Exchange exchange){

}
...
Рейтинг: 0 / 0
Apache Camel
    #39550094
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fercquestionerпропущено...


Возможно Вы знаете что-то, чего не знаю я просто)

Я с кемелом неделю как знакомлюсь в боевых условиях.

Но по-моему вопрос звучит понятно. из process надо сделать роут в монгу. Роут сам по себе работает, но дата в нормальном формате не записывается.

Конкретно тут я не ради фана пытаюсь изучить, а надо задачу реальную решить.

Что мешает дату преобразовать к нужному виду в процессоре?
Код: java
1.
2.
3.
public void process(Exchange exchange){

}



Что конкретно написать внутри?
...
Рейтинг: 0 / 0
Apache Camel
    #39550097
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

exchange.getIn().getBody()
// преобразовать тело
exchange.getOut().setBody()
...
Рейтинг: 0 / 0
Apache Camel
    #39550098
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
questionerfercпропущено...


Что мешает дату преобразовать к нужному виду в процессоре?
Код: java
1.
2.
3.
public void process(Exchange exchange){

}



Что конкретно написать внутри?

смотря что у Вас идет по маршруту.
Например POJO:
Код: java
1.
2.
3.
4.
public void process(Exchange exchange){
MyPojo pojo = exchange.getIn().getBody(MyPojo.class);
// и делайте все что хотите с данными.
}
...
Рейтинг: 0 / 0
Apache Camel
    #39550144
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fercquestionerпропущено...


Что конкретно написать внутри?

смотря что у Вас идет по маршруту.
Например POJO:
Код: java
1.
2.
3.
4.
public void process(Exchange exchange){
MyPojo pojo = exchange.getIn().getBody(MyPojo.class);
// и делайте все что хотите с данными.
}



Я хочу сделать так, чтобы в MyPojo дата стала такого неизвестного мне формата который поймёт кемел, чтобы в монгу записать нормальную дату.
...
Рейтинг: 0 / 0
Apache Camel
    #39550149
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
questionerfercпропущено...


смотря что у Вас идет по маршруту.
Например POJO:
Код: java
1.
2.
3.
4.
public void process(Exchange exchange){
MyPojo pojo = exchange.getIn().getBody(MyPojo.class);
// и делайте все что хотите с данными.
}



Я хочу сделать так, чтобы в MyPojo дата стала такого неизвестного мне формата который поймёт кемел, чтобы в монгу записать нормальную дату.

давайте примеры что не так
Ваши объяснения только все запутывают, причем тут какой-то мифический неизвестный формат даты.
...
Рейтинг: 0 / 0
Apache Camel
    #39550372
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fercquestionerпропущено...


Я хочу сделать так, чтобы в MyPojo дата стала такого неизвестного мне формата который поймёт кемел, чтобы в монгу записать нормальную дату.

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

Код: java
1.
2.
3.
4.
5.
6.
7.
@Document(collection = "data")
public class MyPojo {
    @Id
    private String id;
    private LocalDateTime createdDate;
    ....
}


Код: java
1.
2.
3.
4.
final List<MyPojo > pojoList=....
producerTemplate.sendBody("mongodb:mongoBean?database=" + mongoDataConfiguration.getDatabase()
                                    + "&createCollection=true&operation=insert&collection=" + mongoDataConfiguration.getDataPointCollection(), 
        pojoList);



в базе

автор"createdDate" : {
"month" : "NOVEMBER",
"year" : 2017,
"dayOfMonth" : 7,
"dayOfWeek" : "TUESDAY",
"dayOfYear" : 311,
"monthValue" : 11,
"hour" : 17,
"minute" : 55,
"nano" : 259000000,
"second" : 21,
"chronology" : {
"id" : "ISO",
"calendarType" : "iso8601"
}

надо чтобы было
автор"createdDate" : ISODate("2017-11-06T12:47:51.720")

Понятно?
...
Рейтинг: 0 / 0
Apache Camel
    #39550394
ferc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
questionerfercпропущено...


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

Код: java
1.
2.
3.
4.
5.
6.
7.
@Document(collection = "data")
public class MyPojo {
    @Id
    private String id;
    private LocalDateTime createdDate;
    ....
}


Код: java
1.
2.
3.
4.
final List<MyPojo > pojoList=....
producerTemplate.sendBody("mongodb:mongoBean?database=" + mongoDataConfiguration.getDatabase()
                                    + "&createCollection=true&operation=insert&collection=" + mongoDataConfiguration.getDataPointCollection(), 
        pojoList);



в базе

автор"createdDate" : {
"month" : "NOVEMBER",
"year" : 2017,
"dayOfMonth" : 7,
"dayOfWeek" : "TUESDAY",
"dayOfYear" : 311,
"monthValue" : 11,
"hour" : 17,
"minute" : 55,
"nano" : 259000000,
"second" : 21,
"chronology" : {
"id" : "ISO",
"calendarType" : "iso8601"
}

надо чтобы было
автор"createdDate" : ISODate("2017-11-06T12:47:51.720")

Понятно?

попробуйте сделать createdDate - java.util.Date
...
Рейтинг: 0 / 0
Apache Camel
    #39550405
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ferc,

пробовал.
...
Рейтинг: 0 / 0
Apache Camel
    #39550407
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
получается NumberLong(213234234)
...
Рейтинг: 0 / 0
Apache Camel
    #39550413
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerполучается NumberLong(213234234)

в верблюде джексон используется (org.apache.camel.component.mongodb.converters.MongoDbBasicConverters), нужно написать свой сериализатор и натравить его на поле: https://stackoverflow.com/questions/29354053/how-to-store-date-field-as-isodate-using-jackson-in-mongodb
...
Рейтинг: 0 / 0
Apache Camel
    #39550419
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфиловquestionerполучается NumberLong(213234234)

в верблюде джексон используется (org.apache.camel.component.mongodb.converters.MongoDbBasicConverters), нужно написать свой сериализатор и натравить его на поле: https://stackoverflow.com/questions/29354053/how-to-store-date-field-as-isodate-using-jackson-in-mongodb

Я может что-то не так делал, но у меня получалась строка "ISODate(....)"
да ещё и вложенный объект

нашёл кусок кода, который у меня был и по которому я делал(не 1 в 1)

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public class IsoDateSerializer extends JsonSerializer<DateTime> {
    @Override
    public void serialize(DateTime value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
           jgen.writeStartObject();
        serializeContents(value.toDate(), jgen, provider);
        jgen.writeEndObject();
    }
    private void serializeContents(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
        jgen.writeFieldName("myDate");
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
        String formattedDate = formatter.format(value);
        jgen.writeString(formattedDate);
    }
}



код из вашей ссылки:


Код: java
1.
2.
3.
4.
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JodaModule());
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true);
mapper.writeValueAsString(date);






Код: java
1.
2.
3.
4.
5.
6.
public class IsoDateSerializer extends JsonSerializer<DateTime> {
    @Override
    public void serialize(DateTime value, JsonGenerator jgen, SerializerProvider provider) {
        String isoDate = ISODateTimeFormat.dateTime().print(value);
        jgen.writeRaw("ISODATE(\"" + isoDate + "\")");
    }
...
Рейтинг: 0 / 0
Apache Camel
    #39550458
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

так на SO ответ с зеленой галкой не означает что он правильный (там ниже комменты по этому поводу), там что-то в таком духе должно быть:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
	@Override
	public void serialize(LocalDateTime value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
		jgen.writeStartObject();
		jgen.writeFieldName("$date");
		jgen.writeString(formatter.format(value));
		jgen.writeEndObject();
	}
...
Рейтинг: 0 / 0
Apache Camel
    #39550472
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

Фсё уже украдено до нас ©:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-parameter-names</artifactId>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jdk8</artifactId>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
</dependency>

https://github.com/FasterXML/jackson-datatype-jsr310/
...
Рейтинг: 0 / 0
Apache Camel
    #39550592
Natalia_141277
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, спасибо, если что, я со своим вопросом уже более-менее разобралась:-)
...
Рейтинг: 0 / 0
Apache Camel
    #39550605
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфиловquestioner,

так на SO ответ с зеленой галкой не означает что он правильный (там ниже комменты по этому поводу), там что-то в таком духе должно быть:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
	@Override
	public void serialize(LocalDateTime value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
		jgen.writeStartObject();
		jgen.writeFieldName("$date");
		jgen.writeString(formatter.format(value));
		jgen.writeEndObject();
	}


Пробовал уже...
https://stackoverflow.com/questions/47173504/could-not-save-date-field-as-iso-date-in-mongo-db-via-camel
...
Рейтинг: 0 / 0
Apache Camel
    #39550607
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Usmanquestioner,

Фсё уже украдено до нас ©:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-parameter-names</artifactId>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jdk8</artifactId>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
</dependency>

https://github.com/FasterXML/jackson-datatype-jsr310/

С этим я как-то уже тоже трахался. И тогда меня это привело к тому, что в свежих версиях джексона эта херь уже смержена в основной jar
...
Рейтинг: 0 / 0
Apache Camel
    #39550621
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerС этим я как-то уже тоже трахался. И тогда меня это привело к тому, что в свежих версиях джексона эта херь уже смержена в основной jarСмержено-то оно смержено. А зарегить модули пробовали?
Код: java
1.
2.
3.
mapper.registerModule(new ParameterNamesModule());
mapper.registerModule(new Jdk8Module());
mapper.registerModule(new JavaTimeModule());
...
Рейтинг: 0 / 0
Apache Camel
    #39550640
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerПробовал уже...
https://stackoverflow.com/questions/47173504/could-not-save-date-field-as-iso-date-in-mongo-db-via-camel

Чет непонятно, толи в Camel фигня в org.apache.camel.component.mongodb.converters.MongoDbBasicConverters написана, толи MongoDB через одно место... вам наверное надо баги в Camel зафайлить, вот в этих местах косяки:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    @Converter
    public static BasicDBObject fromStringToBasicDBObject(String s) {
        BasicDBObject answer = null;
        try {
            answer = (BasicDBObject) JSON.parse(s);
        } catch (Exception e) {
            LOG.warn("String -> DBObject conversion selected, but the following exception occurred. Returning null.", e);
        }
        
        return answer;
    }



Должно быть: BasicDBObject.parse(s) вместо JSON.parse(s), потому как BasicDBObject.parse() подерживает extended json, а JSON.parse() - не поддерживает.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    @Converter
    public static DBObject fromAnyObjectToDBObject(Object value) {
        BasicDBObject answer;
        try {
            Map<?, ?> m = OBJECT_MAPPER.convertValue(value, Map.class);
            answer = new BasicDBObject(m);
        } catch (Exception e) {
            LOG.warn("Conversion has fallen back to generic Object -> DBObject, but unable to convert type {}. Returning null. {}",
                    value.getClass().getCanonicalName(), e.getClass().getCanonicalName() + ": " + e.getMessage());
            return null;
        }
        return answer;
    }



по идее должно быть так:

Код: java
1.
2.
Map<?, ?> m = OBJECT_MAPPER.convertValue(value, Map.class);
answer = BasicDBObject.parse(JSON.serialize(m));



Для вас же можно такой обходной путь сделать:

в camel:
Код: java
1.
2.
3.
4.
5.
	@Override
	public final void process(Exchange exchange) throws Exception {
		Map<?, ?> m = new ObjectMapper().convertValue(exchange.getIn().getBody(), Map.class);
		exchange.getOut().setBody(BasicDBObject.parse(JSON.serialize(m)));
	}
...
Рейтинг: 0 / 0
Apache Camel
    #39550808
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UsmanquestionerС этим я как-то уже тоже трахался. И тогда меня это привело к тому, что в свежих версиях джексона эта херь уже смержена в основной jarСмержено-то оно смержено. А зарегить модули пробовали?
Код: java
1.
2.
3.
mapper.registerModule(new ParameterNamesModule());
mapper.registerModule(new Jdk8Module());
mapper.registerModule(new JavaTimeModule());



Все три точно не пробовал. Надо ради любопытства попробовать.

P.S.


я в итоге закостылил через процессор и явный вызов репозитория внутри
...
Рейтинг: 0 / 0
Apache Camel
    #39550819
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфилов,
Андрей ПанфиловДля вас же можно такой обходной путь сделать:

в camel:
Код: java
1.
2.
3.
4.
5.
	@Override
	public final void process(Exchange exchange) throws Exception {
		Map<?, ?> m = new ObjectMapper().convertValue(exchange.getIn().getBody(), Map.class);
		exchange.getOut().setBody(BasicDBObject.parse(JSON.serialize(m)));
	}



а как к темплейту присобачить процессор?

Код: java
1.
2.
3.
producerTemplate.sendBody("mongodb:mongoBean?database=" + mongoDataConfiguration.getDatabase()
                                    + "&createCollection=true&operation=insert&collection=" + mongoDataConfiguration.getDataPointCollection(), 
        pojoList);



этот код уже внутри процессора.

И их внутри этого процессора 2
...
Рейтинг: 0 / 0
Apache Camel
    #39551921
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerа как к темплейту присобачить процессор?

Код: java
1.
2.
3.
producerTemplate.sendBody("mongodb:mongoBean?database=" + mongoDataConfiguration.getDatabase()
                                    + "&createCollection=true&operation=insert&collection=" + mongoDataConfiguration.getDataPointCollection(), 
        pojoList);



этот код уже внутри процессора.

И их внутри этого процессора 2Вот опять нифига непонятно что вы хотите вообще. Кода типа:

Код: java
1.
2.
3.
4.
final List<MyPojo > pojoList=....
producerTemplate.sendBody("mongodb:mongoBean?database=" + mongoDataConfiguration.getDatabase()
                                    + "&createCollection=true&operation=insert&collection=" + mongoDataConfiguration.getDataPointCollection(), 
        pojoList);



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

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class MongoRouteBuilder extends RouteBuilder {

	@Override
	public void configure() throws Exception {
		from("direct:insetCollection").split(body()).process(new Processor() {
			@Override
			public void process(Exchange exchange) throws Exception {
				Map<?, ?> m = new ObjectMapper().convertValue(exchange.getIn().getBody(), Map.class);
				exchange.getOut().setBody(BasicDBObject.parse(JSON.serialize(m)));
			}
		}).to("mongodb:mongoBean?database=" + mongoDataConfiguration.getDatabase()
				+ "&createCollection=true&operation=insert&collection="
				+ mongoDataConfiguration.getDataPointCollection());
	}

}
...
Рейтинг: 0 / 0
Apache Camel
    #39552104
xds
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xds
Гость
Андрей ПанфиловquestionerПробовал уже...
https://stackoverflow.com/questions/47173504/could-not-save-date-field-as-iso-date-in-mongo-db-via-camel

Чет непонятно, толи в Camel фигня в org.apache.camel.component.mongodb.converters.MongoDbBasicConverters написана, толи MongoDB через одно место... вам наверное надо баги в Camel зафайлить, вот в этих местах косяки:



Это вроде уже поправлено в Camel 2.20 CAMEL-11455: Fixed camel-mongodb type converters which was implemented wrong and could lead to stop working on first parsing error.
...
Рейтинг: 0 / 0
Apache Camel
    #39559320
Natalia_141277
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Сбросьте плиз Camel in action second edition
эту ссылку не предлагать, т.к. я не могу залогиниться (платно) и часть текста тут нельзя прочитать:-(
спасибо!;-)
...
Рейтинг: 0 / 0
Apache Camel
    #39559334
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Natalia_141277,
...
Рейтинг: 0 / 0
Apache Camel
    #39559491
Natalia_141277
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Usman,
thanks:-)
...
Рейтинг: 0 / 0
48 сообщений из 48, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Apache Camel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]