23
23
import org .demo .batch .model .Product ;
24
24
import org .slf4j .Logger ;
25
25
import org .slf4j .LoggerFactory ;
26
+ import org .slf4j .MDC ;
26
27
import software .amazon .awssdk .core .sync .RequestBody ;
27
28
import software .amazon .awssdk .http .urlconnection .UrlConnectionHttpClient ;
28
29
import software .amazon .awssdk .services .s3 .S3Client ;
29
30
import software .amazon .awssdk .services .s3 .model .PutObjectRequest ;
31
+ import software .amazon .lambda .powertools .logging .Logging ;
30
32
import software .amazon .lambda .powertools .tracing .Tracing ;
31
33
import software .amazon .lambda .powertools .tracing .TracingUtils ;
32
34
@@ -42,10 +44,14 @@ public class AbstractSqsBatchHandler {
42
44
* @param p deserialized product
43
45
* @param context Lambda context
44
46
*/
47
+ @ Logging
45
48
@ Tracing
46
49
protected void processMessage (Product p , Context context ) {
47
50
TracingUtils .putAnnotation ("productId" , p .getId ());
51
+ TracingUtils .putAnnotation ("Thread" , Thread .currentThread ().getName ());
52
+ MDC .put ("product" , String .valueOf (p .getId ()));
48
53
LOGGER .info ("Processing product {}" , p );
54
+
49
55
char c = (char )(r .nextInt (26 ) + 'a' );
50
56
char [] chars = new char [1024 * 1000 ];
51
57
Arrays .fill (chars , c );
@@ -57,6 +63,8 @@ protected void processMessage(Product p, Context context) {
57
63
PutObjectRequest .builder ().bucket (bucket ).key (p .getId ()+".json" ).build (), RequestBody .fromFile (file ));
58
64
} catch (IOException e ) {
59
65
throw new RuntimeException (e );
66
+ } finally {
67
+ MDC .remove ("product" );
60
68
}
61
69
}
62
70
}
0 commit comments