|
14 | 14 |
|
15 | 15 | package software.amazon.lambda.powertools.batch; |
16 | 16 |
|
| 17 | +import org.crac.Context; |
| 18 | +import org.crac.Core; |
| 19 | +import org.crac.Resource; |
17 | 20 | import software.amazon.lambda.powertools.batch.builder.DynamoDbBatchMessageHandlerBuilder; |
18 | 21 | import software.amazon.lambda.powertools.batch.builder.KinesisBatchMessageHandlerBuilder; |
19 | 22 | import software.amazon.lambda.powertools.batch.builder.SqsBatchMessageHandlerBuilder; |
| 23 | +import software.amazon.lambda.powertools.common.internal.ClassPreLoader; |
20 | 24 |
|
21 | 25 | /** |
22 | 26 | * A builder-style interface we can use to build batch processing handlers for SQS, Kinesis Streams, |
|
27 | 31 | * |
28 | 32 | * @see <a href="https://docs.powertools.aws.dev/lambda/java/utilities/batch/">Powertools for AWS Lambda (Java) Batch Documentation</a> |
29 | 33 | **/ |
30 | | -public class BatchMessageHandlerBuilder { |
| 34 | +public class BatchMessageHandlerBuilder implements Resource { |
| 35 | + |
| 36 | + // Dummy instance to register BatchMessageHandlerBuilder with CRaC |
| 37 | + private static final BatchMessageHandlerBuilder INSTANCE = new BatchMessageHandlerBuilder(); |
| 38 | + |
| 39 | + // Static block to ensure CRaC registration happens at class loading time |
| 40 | + static { |
| 41 | + Core.getGlobalContext().register(INSTANCE); |
| 42 | + } |
31 | 43 |
|
32 | 44 | /** |
33 | 45 | * Build an SQS-batch message handler. |
@@ -55,4 +67,14 @@ public DynamoDbBatchMessageHandlerBuilder withDynamoDbBatchHandler() { |
55 | 67 | public KinesisBatchMessageHandlerBuilder withKinesisBatchHandler() { |
56 | 68 | return new KinesisBatchMessageHandlerBuilder(); |
57 | 69 | } |
| 70 | + |
| 71 | + @Override |
| 72 | + public void beforeCheckpoint(Context<? extends Resource> context) throws Exception { |
| 73 | + ClassPreLoader.preloadClasses(); |
| 74 | + } |
| 75 | + |
| 76 | + @Override |
| 77 | + public void afterRestore(Context<? extends Resource> context) throws Exception { |
| 78 | + // No action needed after restore |
| 79 | + } |
58 | 80 | } |
0 commit comments