|
54 | 54 | * @author Lukasz Kaminski
|
55 | 55 | * @author Kyuhyeok Park
|
56 | 56 | * @author Wang Zhiyang
|
| 57 | + * @author Choi Wang Gyu |
57 | 58 | */
|
58 | 59 | public class ContainerProperties extends ConsumerProperties {
|
59 | 60 |
|
@@ -1116,56 +1117,95 @@ public void setRecordObservationsInBatch(boolean recordObservationsInBatch) {
|
1116 | 1117 |
|
1117 | 1118 | @Override
|
1118 | 1119 | public String toString() {
|
1119 |
| - return "ContainerProperties [" |
1120 |
| - + renderProperties() |
1121 |
| - + "\n ackMode=" + this.ackMode |
1122 |
| - + "\n ackCount=" + this.ackCount |
1123 |
| - + "\n ackTime=" + this.ackTime |
1124 |
| - + "\n consumerStartTimeout=" + this.consumerStartTimeout |
1125 |
| - + "\n messageListener=" + this.messageListener |
1126 |
| - + (this.listenerTaskExecutor != null |
1127 |
| - ? "\n listenerTaskExecutor=" + this.listenerTaskExecutor |
1128 |
| - : "") |
1129 |
| - + "\n shutdownTimeout=" + this.shutdownTimeout |
1130 |
| - + "\n idleEventInterval=" |
1131 |
| - + (this.idleEventInterval == null ? "not enabled" : this.idleEventInterval) |
1132 |
| - + "\n idlePartitionEventInterval=" |
1133 |
| - + (this.idlePartitionEventInterval == null ? "not enabled" : this.idlePartitionEventInterval) |
1134 |
| - + (this.transactionManager != null |
1135 |
| - ? "\n transactionManager=" + this.transactionManager |
1136 |
| - : "") |
1137 |
| - + (this.kafkaAwareTransactionManager != null |
1138 |
| - ? "\n kafkaAwareTransactionManager=" + this.kafkaAwareTransactionManager |
1139 |
| - : "") |
1140 |
| - + "\n monitorInterval=" + this.monitorInterval |
1141 |
| - + (this.scheduler != null ? "\n scheduler=" + this.scheduler : "") |
1142 |
| - + "\n noPollThreshold=" + this.noPollThreshold |
1143 |
| - + "\n pauseImmediate=" + this.pauseImmediate |
1144 |
| - + "\n pollTimeoutWhilePaused=" + this.pollTimeoutWhilePaused |
1145 |
| - + "\n subBatchPerPartition=" + this.subBatchPerPartition |
1146 |
| - + "\n assignmentCommitOption=" + this.assignmentCommitOption |
1147 |
| - + "\n deliveryAttemptHeader=" + this.deliveryAttemptHeader |
1148 |
| - + "\n batchRecoverAfterRollback=" + this.batchRecoverAfterRollback |
1149 |
| - + "\n eosMode=" + this.eosMode |
1150 |
| - + "\n transactionDefinition=" + this.transactionDefinition |
1151 |
| - + "\n stopContainerWhenFenced=" + this.stopContainerWhenFenced |
1152 |
| - + "\n stopImmediate=" + this.stopImmediate |
1153 |
| - + "\n asyncAcks=" + this.asyncAcks |
1154 |
| - + "\n logContainerConfig=" + this.logContainerConfig |
1155 |
| - + "\n missingTopicsFatal=" + this.missingTopicsFatal |
1156 |
| - + "\n idleBeforeDataMultiplier=" + this.idleBeforeDataMultiplier |
1157 |
| - + "\n idleBetweenPolls=" + this.idleBetweenPolls |
1158 |
| - + "\n micrometerEnabled=" + this.micrometerEnabled |
1159 |
| - + "\n observationEnabled=" + this.observationEnabled |
1160 |
| - + (this.observationConvention != null |
1161 |
| - ? "\n observationConvention=" + this.observationConvention |
1162 |
| - : "") |
1163 |
| - + (this.observationRegistry != null |
1164 |
| - ? "\n observationRegistry=" + this.observationRegistry |
1165 |
| - : "") |
1166 |
| - + "\n restartAfterAuthExceptions=" + this.restartAfterAuthExceptions |
1167 |
| - + "\n recordObservationsInBatch=" + this.recordObservationsInBatch |
1168 |
| - + "\n]"; |
| 1120 | + StringBuilder sb = new StringBuilder("ContainerProperties ["); |
| 1121 | + sb.append(renderProperties()); |
| 1122 | + |
| 1123 | + // Core acknowledgment properties |
| 1124 | + appendProperty(sb, "ackMode", this.ackMode); |
| 1125 | + appendProperty(sb, "ackCount", this.ackCount); |
| 1126 | + appendProperty(sb, "ackTime", this.ackTime); |
| 1127 | + |
| 1128 | + // Timeout and startup properties |
| 1129 | + appendProperty(sb, "consumerStartTimeout", this.consumerStartTimeout); |
| 1130 | + appendProperty(sb, "shutdownTimeout", this.shutdownTimeout); |
| 1131 | + |
| 1132 | + // Listener configuration |
| 1133 | + appendProperty(sb, "messageListener", this.messageListener); |
| 1134 | + appendProperty(sb, "listenerTaskExecutor", this.listenerTaskExecutor); |
| 1135 | + |
| 1136 | + // Idle event configuration |
| 1137 | + appendEnabledProperty(sb, "idleEventInterval", this.idleEventInterval); |
| 1138 | + appendEnabledProperty(sb, "idlePartitionEventInterval", this.idlePartitionEventInterval); |
| 1139 | + |
| 1140 | + // Transaction management |
| 1141 | + appendProperty(sb, "transactionManager", this.transactionManager); |
| 1142 | + appendProperty(sb, "kafkaAwareTransactionManager", this.kafkaAwareTransactionManager); |
| 1143 | + appendProperty(sb, "transactionDefinition", this.transactionDefinition); |
| 1144 | + |
| 1145 | + // Monitoring and scheduling |
| 1146 | + appendProperty(sb, "monitorInterval", this.monitorInterval); |
| 1147 | + appendProperty(sb, "scheduler", this.scheduler); |
| 1148 | + appendProperty(sb, "noPollThreshold", this.noPollThreshold); |
| 1149 | + |
| 1150 | + // Container behavior flags |
| 1151 | + appendProperty(sb, "pauseImmediate", this.pauseImmediate); |
| 1152 | + appendProperty(sb, "stopImmediate", this.stopImmediate); |
| 1153 | + appendProperty(sb, "stopContainerWhenFenced", this.stopContainerWhenFenced); |
| 1154 | + appendProperty(sb, "asyncAcks", this.asyncAcks); |
| 1155 | + |
| 1156 | + // Polling and partition configuration |
| 1157 | + appendProperty(sb, "pollTimeoutWhilePaused", this.pollTimeoutWhilePaused); |
| 1158 | + appendProperty(sb, "subBatchPerPartition", this.subBatchPerPartition); |
| 1159 | + appendProperty(sb, "assignmentCommitOption", this.assignmentCommitOption); |
| 1160 | + appendProperty(sb, "idleBetweenPolls", this.idleBetweenPolls); |
| 1161 | + |
| 1162 | + // Header and recovery configuration |
| 1163 | + appendProperty(sb, "deliveryAttemptHeader", this.deliveryAttemptHeader); |
| 1164 | + appendProperty(sb, "batchRecoverAfterRollback", this.batchRecoverAfterRollback); |
| 1165 | + |
| 1166 | + // Exactly-once semantics |
| 1167 | + appendProperty(sb, "eosMode", this.eosMode); |
| 1168 | + |
| 1169 | + // Logging and error handling |
| 1170 | + appendProperty(sb, "logContainerConfig", this.logContainerConfig); |
| 1171 | + appendProperty(sb, "missingTopicsFatal", this.missingTopicsFatal); |
| 1172 | + appendProperty(sb, "restartAfterAuthExceptions", this.restartAfterAuthExceptions); |
| 1173 | + |
| 1174 | + // Metrics and observation |
| 1175 | + appendProperty(sb, "micrometerEnabled", this.micrometerEnabled); |
| 1176 | + appendProperty(sb, "observationEnabled", this.observationEnabled); |
| 1177 | + appendProperty(sb, "recordObservationsInBatch", this.recordObservationsInBatch); |
| 1178 | + appendProperty(sb, "observationConvention", this.observationConvention); |
| 1179 | + appendProperty(sb, "observationRegistry", this.observationRegistry); |
| 1180 | + |
| 1181 | + // Data multiplier |
| 1182 | + appendProperty(sb, "idleBeforeDataMultiplier", this.idleBeforeDataMultiplier); |
| 1183 | + |
| 1184 | + sb.append("\n]"); |
| 1185 | + return sb.toString(); |
| 1186 | + } |
| 1187 | + |
| 1188 | + /** |
| 1189 | + * Append a property to the StringBuilder with consistent formatting. |
| 1190 | + * @param sb the StringBuilder |
| 1191 | + * @param name the property name |
| 1192 | + * @param value the property value |
| 1193 | + */ |
| 1194 | + private void appendProperty(StringBuilder sb, String name, @Nullable Object value) { |
| 1195 | + if (value != null) { |
| 1196 | + sb.append("\n ").append(name).append("=").append(value); |
| 1197 | + } |
| 1198 | + } |
| 1199 | + |
| 1200 | + /** |
| 1201 | + * Append a property with "enabled/not enabled" formatting for nullable values. |
| 1202 | + * @param sb the StringBuilder |
| 1203 | + * @param name the property name |
| 1204 | + * @param value the property value (nullable) |
| 1205 | + */ |
| 1206 | + private void appendEnabledProperty(StringBuilder sb, String name, @Nullable Object value) { |
| 1207 | + sb.append("\n ").append(name).append("=") |
| 1208 | + .append(value == null ? "not enabled" : value); |
1169 | 1209 | }
|
1170 | 1210 |
|
1171 | 1211 | }
|
0 commit comments