2016-12-08 1 views
1

Есть ли возможность сериализации полного сообщения в каком-либо формате, например. JSON и сохранить его в db. После этого я десериализую сообщение с полными заголовками и отправлю его на amqp. Что-то вроде:Весна интеграции - сохранить полное сообщение в базу данных и прочитать его снова

<int:object-to-json-transformer object-mapper="mapper" /> 
<int-jdbc:outbound-channel-adapter channel="srk2" data-source="dataSource" query="insert into messages (serialized_message) values (:message_with_headers)" /> 

, а затем

<int-jdbc:inbound-channel-adapter query="SELECT auto_inc_id,serialized_message FROM messages" channel="oc" data-source="dataSource"> 
<int-amqp:outbound-channel-adapter exchange-name="bookmakers" amqp-template="rabbitTemplate" channel="oc" order="1" /> 
<int-jdbc:outbound-channel-adapter channel="oc" data-source="dataSource" query="DELETE FROM messages WHERE auto_incr_id IN (:auto_inc_id)" order="2" /> 

ответ

1

OK. Посмотрите, что вы можете сделать это точно с помощью <int:object-to-json-transformer> или любого другого подобного трансформатора. Но вы должны поставить перед ним этот трюк:

<service-activator expression="T(org.springframework.integration.support.MessageBuilder).withPayload(#root)"/> 

Просто потому, что первые один делает преобразование только для payload. Итак, чтобы хранить заголовки, вам нужно разместить все сообщение до payload.

Существует другой компонент по этому вопросу - <claim-check> который определенно хранит все сообщения в БД: http://docs.spring.io/spring-integration/docs/4.3.5.RELEASE/reference/html/messaging-transformation-chapter.html#claim-check

+0

Спасибо. Требование проверки похоже на то, что мне нужно, и я, очевидно, хотел переосмыслить :) –

+0

Как проверяет чек, где отправлять сохраненное сообщение в случае сбоя потока, который сохранил сообщение? Может ли претендовать на выезд в качестве подольтера на отдельную тему? –

+0

Извините, это непонятно. Пожалуйста, начните новую нить SO с дополнительным фоном. –

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

  • Нет связанных вопросов^_^