クラス JsonChannelMessageStorePreparedStatementSetter
java.lang.ObjectSE
org.springframework.integration.jdbc.store.channel.ChannelMessageStorePreparedStatementSetter
org.springframework.integration.jdbc.store.channel.JsonChannelMessageStorePreparedStatementSetter
public class JsonChannelMessageStorePreparedStatementSetter
extends ChannelMessageStorePreparedStatementSetter
Message オブジェクトに Java 直列化ではなく JSON 直列化を使用する ChannelMessageStorePreparedStatementSetter 実装。 デフォルトでは、この実装はメッセージ全体 (ヘッダーとペイロードを含む) を JSON として保存し、適切な逆直列化のために Jackson の @class プロパティを使用して型情報が埋め込まれます。
重要 : JSON 直列化は、メッセージコンテンツをテキスト形式でデータベースに公開します。機密データには適切なデータベースアクセス制御と暗号化を適用してください。機密情報を扱う本番環境で JSON 直列化を使用する場合は、セキュリティへの影響を考慮してください。
データベース要件 : この実装では、MESSAGE_CONTENT 列をテキストベースの型に変更する必要があります。
- PostgreSQL:
BYTEAからJSONBへの変更 - MySQL:
BLOBからJSONへの変更 - H2:
LONGVARBINARYからCLOBへの変更
使用例:
@Bean
JdbcChannelMessageStore messageStore(DataSource dataSource) {
JdbcChannelMessageStore store = new JdbcChannelMessageStore(dataSource);
store.setChannelMessageStoreQueryProvider(new PostgresChannelMessageStoreQueryProvider());
// Enable JSON serialization (requires schema modification)
store.setPreparedStatementSetter(
new JsonChannelMessageStorePreparedStatementSetter());
store.setMessageRowMapper(
new JsonMessageRowMapper("com.example"));
return store;
}
- 導入:
- 7.0
- 作成者:
- Yoobin Yoon, Artem Bilan
コンストラクター概要
コンストラクターコンストラクター説明Spring Integration メッセージの直列化用に構成されたデフォルトのJsonObjectMapperを使用して、新しいJsonChannelMessageStorePreparedStatementSetterを作成します。JsonChannelMessageStorePreparedStatementSetter(JsonObjectMapper<?, ?> jsonObjectMapper) カスタムJsonObjectMapperを使用して新しいJsonChannelMessageStorePreparedStatementSetterを作成します。方法の概要
修飾子と型メソッド説明voidsetValues(PreparedStatementSE preparedStatement, Message<?> requestMessage, ObjectSE groupId, StringSE region, boolean priorityEnabled) 提供された引数に従って preparedStatement パラメーターの設定を実行します。
コンストラクターの詳細
JsonChannelMessageStorePreparedStatementSetter
public JsonChannelMessageStorePreparedStatementSetter()Spring Integration メッセージの直列化用に構成されたデフォルトのJsonObjectMapperを使用して、新しいJsonChannelMessageStorePreparedStatementSetterを作成します。このコンストラクターは、標準の Spring Integration クラスおよび Java クラスを直列化する場合に適しています。カスタムペイロード型の場合は、対応する
JsonMessageRowMapperにパッケージを追加する必要があります。JsonChannelMessageStorePreparedStatementSetter
カスタムJsonObjectMapperを使用して新しいJsonChannelMessageStorePreparedStatementSetterを作成します。このコンストラクターを使用すると、JSON 直列化構成を完全に制御できます。
注意 : 一貫した直列化とデ直列化を実現するには、対応する
JsonMessageRowMapperでも同じ JsonObjectMapper 構成を使用する必要があります。- パラメーター:
jsonObjectMapper- JSON 直列化に使用するJsonObjectMapper
方法の詳細
setValues
public void setValues(PreparedStatementSE preparedStatement, Message<?> requestMessage, ObjectSE groupId, StringSE region, boolean priorityEnabled) throws SQLExceptionSE クラスからコピーされた説明:ChannelMessageStorePreparedStatementSetter指定された引数に従って preparedStatement パラメーターの入力を実行します。デフォルトの機能は (パラメーター - データ) です。- 1 - messageId
- 2 - groupKey
- 3 - 領域
- 4 - createdDate
- 5 - 有効な場合は優先度、それ以外の場合は null
- 6 -
ChannelMessageStorePreparedStatementSetter.serializerが指定されている場合は直列化されたメッセージ。
- オーバーライド:
- クラス
ChannelMessageStorePreparedStatementSetterのsetValues - パラメーター:
preparedStatement- 提供された引数に基づいて列にデータを入力するPreparedStatementSErequestMessage- 保存するMessagegroupId- 保存するメッセージのグループ IDregion- 異なるデータベースクライアントを区別するためのターゲットテーブル内の領域priorityEnabled- 優先度を保存する必要があるかどうかを示すフラグ- 例外:
SQLExceptionSE- データ入力中に例外がスローされます