consumerDemo-avro-java\\src\\main\\resources\\avro-tools-1.8.2.jar:Avroプロトコル関連コードの生成に使用するツールです。consumerDemo-avro-java\\src\\main\\java\\com\\tencent\\subscribe\\avro:Avroツールがコードを生成するディレクトリです。consumerDemo-avro-java\\src\\main\\resources\\Record.avsc:プロトコル定義ファイルです。{"namespace": "com.tencent.subscribe.avro", //Record.avsc の最後の1個のschemaで、"name" は "Record" と表示されます"type": "record","name": "Record", //"name" は "Record" と表示され、kafkaから消費するデータ形式を表します"fields": [{"name": "id", //idはグローバルに増加するIDを示し、その他のrecordの値の説明は以下の表の通りです"type": "long","doc": "unique id of this record in the whole stream"},{"name": "version", //versionはプロトコルバージョンを示します"type": "int","doc": "protocol version"},{"name": "messageType", //メッセージタイプ"aliases": ["operation"],"type": {"namespace": "com.tencent.subscribe.avro","name": "MessageType","type": "enum","symbols": ["INSERT","UPDATE","DELETE","DDL","BEGIN","COMMIT","HEARTBEAT","CHECKPOINT","ROLLBACK"]}},{……},}
Recordのフィールド名 | 説明 |
id | グローバルに増加するID。 |
version | プロトコルバージョン。現在のバージョンは1です。 |
messageType | メッセージタイプ。列挙値:「INSERT」、「UPDATE」、「DELETE」、「DDL」、「BEGIN」、「COMMIT」、「HEARTBEAT」、「CHECKPOINT」。 |
fileName | 現在のレコードが存在するbinlogファイル名。 |
position | 現在のレコードのbinlog内での終了オフセット。形式はEnd_log_pos@binlogファイル番号です。例えば、現在のレコードがファイルmysql-bin.000004にあり、終了オフセットが2196の場合、その値は「2196@4」です。 |
safePosition | 現在のトランザクションがbinlog内で開始されるオフセット。形式は上記と同じです。 |
timestamp | binlogに書き込まれる時間。unixタイムスタンプ、秒単位です。
binlogに記録されたトランザクション内の対応するevent headerにあるtimestampです。ソース側の長時間トランザクション操作により、timestampとreaderTimestampに時間差が生じる場合がありますが、これは正常な状況です。 |
gtid | 現在のgtid。例:c7c98333-6006-11ed-bfc9-b8cef6e1a231:9。 |
transactionId | トランザクションID。commitイベントのみがトランザクションIDを生成します。 |
serverId | ソースデータベースのserverId。ソースデータベースのserver_idを確認するには、 SHOW VARIABLES LIKE 'server_id'を参照してください。 |
threadId | 現在のトランザクションをコミットしたセッションID。 SHOW processlist;を参照してください。 |
sourceType | ソースデータベースのデータベースタイプ。現在のバージョンではMySQLのみです。 |
sourceVersion | ソースデータベースのバージョン。ソースデータベースのバージョンを確認するには、 select version();を参照してください。 |
schemaName | データベース名。 |
tableName | テーブル名。 |
objectName | 形式:データベース名.テーブル名。 |
columns | テーブル内の各列の定義。 |
oldColumns | DML実行前の該当行のデータです。insertメッセージの場合、この配列はnullです。配列内の要素には12種類のタイプがあります:Integer、Character、Decimal、Float、Timestamp、DateTime、TimestampWithTimeZone、BinaryGeometry、TextGeometry、BinaryObject、TextObject、EmptyObject。詳細はdemoの定義を参照してください。 |
newColumns | DML実行後の該当行のデータです。deleteメッセージの場合、この配列はnullです。配列内の要素には12種類のタイプがあります:Integer、Character、Decimal、Float、Timestamp、DateTime、TimestampWithTimeZone、BinaryGeometry、TextGeometry、BinaryObject、TextObject、EmptyObject。詳細はdemoの定義を参照してください。 |
sql | DDLのSQL文。 |
executionTime | DDLの実行時間。単位は秒です。 |
heartbeatTimestamp | ハートビートメッセージのタイムスタンプ。秒単位です。このフィールドはheartbeatメッセージにのみ存在します。 |
syncedGtid | DTSが解析済みのGTIDセット。形式は例:c7c98333-6006-11ed-bfc9-b8cef6e1a231:1-13。 |
fakeGtid | 構築された偽のGTIDかどうか。gtid_modeがオフの場合、DTSはGTIDを構築します。 |
pkNames | ソースデータベースのテーブルにPKが設定されている場合、DMLメッセージにこのパラメータが含まれます。設定されていない場合は含まれません。 |
readerTimestamp | DTSがこのデータを処理する時間。unixタイムスタンプ、単位はミリ秒です。 |
tags | |
total | メッセージがシャードされる場合、シャードの総数を記録します。現在のバージョン(version=1)では意味がなく、将来の拡張のために予約されています。 |
index | メッセージがシャードされる場合、現在のシャードのインデックスを記録します。現在のバージョン(version=1)では意味がなく、将来の拡張のために予約されています。 |
ファイル/ディレクトリ | 説明 |
resources/Record.avsc | Tencent Cloud avroデータ構造定義ファイル(阿里雲形式への変換を容易にするため、ここではRecord-ali.avscで定義されているIntegerなどの基本型を借用しています)。 |
resources/Record-ali.avsc | 阿里雲 avroデータ構造定義ファイル。 |
java/com/ClassConvertor | Tencent Cloudのデータ構造を阿里雲のデータ構造に変換するためのツールクラスです。 |
java/com/UserBusinessProcess | ユーザービジネスロジッククラスです。Kafkaメッセージをデシリアライズして阿里雲のデータ形式に変換してからここに渡し、一定のビジネスロジックを実行します。 本Demoでは、SQL文の出力または解析機能のみを実装しています。ユーザーは業務ニーズに応じてここで独自に拡張してください。以前の阿里雲コンシューマープログラムの業務処理コードをここに移行し、簡単に適応させるだけでコンパイルして実行することもできます。 |
フィールド名称 | タイプ | 説明 |
version | int | プロトコルバージョン。現在のバージョンは2です。 |
id | long | グローバルに増加するId。 |
sourceTimestamp | long | 現在のレコードがbinlogイベント内で持つタイムスタンプで、秒単位です。 |
sourcePosition | String | 現在のレコードのbinlog内での終了オフセット。形式はEnd_log_pos@binlogファイル番号です。例えば、現在のレコードがファイルmysql-bin.000004にあり、終了オフセットが2196の場合、その値は「2196@4」です。 |
safeSourcePosition | String | 現在のトランザクションがbinlog内で開始されるオフセット。形式は上記と同じです。 |
sourceTxid | String | トランザクションId。COMMITレコードのみがこのフィールドを保持します。 |
source | com.alibaba.dts.formats.avro.Source | ソースデータベースのタイプとバージョン情報。 |
operation | com.alibaba.dts.formats.avro.Operation | メッセージタイプ。INSERT、UPDATE、DELETE、DDL、BEGIN、COMMIT、ROLLBACK、HEARTBEAT、CHECKPOINTをサポートします。 |
objectName | String | データベース名.テーブル名。 |
processTimestamps | List | DTSサブスクリプションサービスがデータを処理するタイムスタンプ。未実装です。 |
tags | Map<String,String> | いくつかの追加情報。現在サポートされているキーには、thread_id、server_id、pk_uk_info、readerThroughoutTime、GTID、GTID_SETが含まれます。 |
fields | Object | テーブル内の各列の定義、つまりヘッダーです。 |
beforeImages | Object | DML実行前の該当行のデータです。insertメッセージの場合、この配列はnullです。配列内の要素には12種類のタイプがあります:Integer、Character、Decimal、Float、Timestamp、DateTime、TimestampWithTimeZone、BinaryGeometry、TextGeometry、BinaryObject、TextObject、EmptyObject。 |
afterImages | Object | DML実行後の該当行のデータです。deleteメッセージの場合、この配列はnullです。配列内の要素には12種類のタイプがあります:Integer、Character、Decimal、Float、Timestamp、DateTime、TimestampWithTimeZone、BinaryGeometry、TextGeometry、BinaryObject、TextObject、EmptyObject。 |
bornTimestamp | long | 未実装です。Tencent Cloud DTSサブスクリプションサービスには対応するフィールドはありません。 |
MySQL タイプ | Avro における型 |
MYSQL_TYPE_NULL | EmptyObject |
MYSQL_TYPE_INT8 | Integer |
MYSQL_TYPE_INT16 | Integer |
MYSQL_TYPE_INT24 | Integer |
MYSQL_TYPE_INT32 | Integer |
MYSQL_TYPE_INT64 | Integer |
MYSQL_TYPE_BIT | Integer |
MYSQL_TYPE_YEAR | DateTime |
MYSQL_TYPE_FLOAT | Float |
MYSQL_TYPE_DOUBLE | Float |
MYSQL_TYPE_VARCHAR | Character |
MYSQL_TYPE_STRING | Character、元の型がbinaryの場合、BinaryObjectに対応します。 |
MYSQL_TYPE_VAR_STRING | Character、元の型がvarbinaryの場合、BinaryObjectに対応します。 |
MYSQL_TYPE_TIMESTAMP | Timestamp |
MYSQL_TYPE_DATE | DateTime |
MYSQL_TYPE_TIME | DateTime |
MYSQL_TYPE_DATETIME | DateTime |
MYSQL_TYPE_TIMESTAMP_NEW | Timestamp |
MYSQL_TYPE_DATE_NEW | DateTime |
MYSQL_TYPE_TIME_NEW | DateTime |
MYSQL_TYPE_DATETIME_NEW | DateTime |
MYSQL_TYPE_ENUM | TextObject |
MYSQL_TYPE_SET | TextObject |
MYSQL_TYPE_DECIMAL | Decimal |
MYSQL_TYPE_DECIMAL_NEW | Decimal |
MYSQL_TYPE_JSON | TextObject |
MYSQL_TYPE_BLOB | BinaryObject |
MYSQL_TYPE_TINY_BLOB | BinaryObject |
MYSQL_TYPE_MEDIUM_BLOB | BinaryObject |
MYSQL_TYPE_LONG_BLOB | BinaryObject |
MYSQL_TYPE_GEOMETRY | BinaryObject |
フィードバック