私は、Springバッチ管理の例で、Spring Batch Talkを参考にして作業しました。この例は、私が望むように完全に走っていた。ウサギのサーバーを使って、私はマスターとスレーブの間のコミュニケーションを確立しました。しかし、どのパーティションがマスタで動作しているのか、そしてどのパーティションがスレーブで動作しているのかをどのように知ることができますSpring Batch Admin UIから表示する機会はありますか?マスタとスレーブのTomcatで実行中のSpringバッチジョブのパーティションのリストを取得する方法
0
A
答えて
0
ColumnRangePartitioner
でパーティショニングを行いながら、もう1つの値partitionIdをExecutionContextに追加しました。
value.putLong("minValue", start);
value.putLong("maxValue", end);
value.putLong("partitionId", number);
私はポートがどのパーティションでスキャンされたような詳細を格納TARGETにpartitionInfoと呼ばれる新しい列が追加されました。ポートを読んでいる間、明示的に値を追加しました。
<bean id="targetItemReader" class="org.springframework.batch.item.database.JdbcPagingItemReader" scope="step">
<property name="dataSource" ref="dataSource" />
<property name="queryProvider">
<bean
class="org.springframework.batch.item.database.support.SqlPagingQueryProviderFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="selectClause" value="ID, IP, PORT, CONNECTED, BANNER, :partitionId as PARTITIONINFO" />
<property name="fromClause" value="FROM TARGET" />
<property name="whereClause" value="ID >= :minId AND ID <= :maxId AND CONNECTED IS NULL"/>
<property name="sortKey" value="ID" />
</bean>
</property>
<property name="pageSize" value="10" />
<property name="parameterValues">
<map>
<entry key="minId" value="#{stepExecutionContext[minValue]}"/>
<entry key="maxId" value="#{stepExecutionContext[maxValue]}"/>
<entry key="partitionId" value="#{stepExecutionContext[partitionId]}" />
</map>
</property>
<property name="rowMapper">
<bean class="com.michaelminella.springbatch.domain.TargetRowMapper"/>
</property>
</bean>
後で最後に更新クエリを実行し、詳細をテーブルに保存しました。
<bean id="targetWriter" class="org.springframework.batch.item.database.JdbcBatchItemWriter">
<property name="assertUpdates" value="true" />
<property name="itemSqlParameterSourceProvider">
<bean class="org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider" />
</property>
<property name="sql" value="UPDATE TARGET SET CONNECTED = :connected, BANNER = :banner, PARTITIONINFO = :partitionId WHERE ID = :id" />
<property name="dataSource" ref="dataSource" />
</bean>
partitionId情報を格納するTarget beanに新しい変数を追加しました。
private int partitionId;
public int getPartitionId() {
return partitionId;
}
public void setPartitionId(int partitionId) {
this.partitionId = partitionId;
}
DB変更は、いくつかのカスタムコードを実行せずにbusiness-schema-mysql.sql
DROP TABLE IF EXISTS TARGET;
CREATE TABLE TARGET (
ID BIGINT NOT NULL PRIMARY KEY ,
IP VARCHAR(15) NOT NULL,
PORT INT NOT NULL,
CONNECTED BOOLEAN NULL,
BANNER VARCHAR(255),
PARTITIONINFO INT
) ENGINE=InnoDB;
関連する問題
- 1. Postgresでマスタとスレーブの両方を取得するクエリ
- 2. jenkinsスレーブでWindowsバッチジョブを実行する
- 3. マスタとスレーブのデータベース
- 4. MySqlマスタ/スレーブSpring Hibernate with com.mysql.jdbc.ReplicationDriver
- 5. Springバッチジョブを特定の順序(Spring Boot)で実行する方法は?
- 6. マスタとスレーブでRedis接続を作成する方法
- 7. J2Modの基本マスタとスレーブの質問
- 8. JDBCを使用して実行中のステートメントのリストを取得する方法
- 9. 私のアプリケーションで実行中のスレッドを取得する方法
- 10. スレーブ上で実行中のスレーブXでJenkinsジョブを開始
- 11. デバッグモードで実行中のTomcatでコードをホットデプロイする方法
- 12. マスタではないスレーブ上でpiplineを実行
- 13. sync_binlogがマスタとスレーブで異なる
- 14. 次の実行時間を取得する方法Spring Scheduling?
- 15. 実行中のPerlスクリプトの名前を取得する方法
- 16. 実行中のJavaプログラムのパスを取得する方法
- 17. 実行中のサーバのURLを取得する方法
- 18. 実行中のアプリケーションの名前を取得する方法は?
- 19. Racket:実行中のファイルのパスを取得する方法は?
- 20. 実行中のプロセスのGUIDを取得する方法
- 21. クラスタから実行中のコンテナのリストを取得する
- 22. 実行中のプロセスの名前リストを取得する
- 23. ASP.NET:バッチジョブの実行
- 24. 実行中のすべてのアプリケーションのリストを取得
- 25. COM:実行中のオブジェクトをすべて取得する方法
- 26. Tomcat V6.0.45でSpring 3.2プロジェクトを実行する方法
- 27. スレーブからマスタへのBucardoの複製
- 28. XAMLデータバインディングの実行中にintellisenseを取得する方法は?
- 29. 実行中のJVMからヒープダンプを取得する方法
- 30. ModbuspalスレーブとJamodをTCPマスタとして
で、本当にどこ実行されているかを知るための方法はありません。 –
議論のために、奇数パーティションをスレーブでもマスターでも動作させる方法はありますか?そう、私は参照リンクや何かそれらを行くことができます@MichaelMinella –