@@ -29,6 +29,11 @@ public String handleRequest(Map<String, Object> event, Context context) {
2929 LambdaLogger logger = context .getLogger ();
3030 logger .log ("Received event: " + gson .toJson (event ));
3131
32+ // Initialize counters for zip code distribution
33+ int messageCount = 10 ;
34+ int zip1000Count = 0 ;
35+ int zip2000Count = 0 ;
36+
3237 try {
3338 // Get environment variables
3439 String mskClusterArn = System .getenv ("MSK_CLUSTER_ARN" );
@@ -42,6 +47,9 @@ public String handleRequest(Map<String, Object> event, Context context) {
4247 throw new RuntimeException ("Required environment variables not set: MSK_CLUSTER_ARN, KAFKA_TOPIC, CONTACT_SCHEMA_NAME" );
4348 }
4449
50+ // Log that we're generating zip codes with different prefixes
51+ logger .log ("Generating contacts with zip codes starting with 1000 (50% chance) or 2000 (50% chance)" );
52+
4553 // Create a Contact object from the input event or use default values
4654 Contact contact = createContactFromEvent (event );
4755 logger .log ("Created contact: " + gson .toJson (contact ));
@@ -73,7 +81,6 @@ public String handleRequest(Map<String, Object> event, Context context) {
7381 logger .log ("Schema definition: " + schemaDefinition );
7482
7583 // Send 10 messages
76- int messageCount = 10 ;
7784 logger .log ("Sending " + messageCount + " AVRO messages to topic: " + kafkaTopic );
7885
7986 for (int i = 0 ; i < messageCount ; i ++) {
@@ -90,13 +97,34 @@ public String handleRequest(Map<String, Object> event, Context context) {
9097 logger .log ("Sending contact #" + (i +1 ) + ": " + gson .toJson (messageContact ));
9198 logger .log ("AVRO record #" + (i +1 ) + ": " + messageAvroRecord .toString ());
9299
100+ // Log the zip code prefix for distribution tracking
101+ String zipCode = messageContact .getZip ();
102+ if (zipCode != null && zipCode .length () >= 4 ) {
103+ String prefix = zipCode .substring (0 , 4 );
104+ logger .log ("Contact #" + (i +1 ) + " zip code prefix: " + prefix );
105+
106+ // Count zip codes by prefix
107+ if ("1000" .equals (prefix )) {
108+ zip1000Count ++;
109+ } else if ("2000" .equals (prefix )) {
110+ zip2000Count ++;
111+ }
112+ }
113+
93114 // Send the message
94115 KafkaProducerHelper .sendAvroMessage (producer , kafkaTopic , messageKey , messageAvroRecord );
95116 logger .log ("Successfully sent AVRO message #" + (i +1 ) + " to topic: " + kafkaTopic );
96117 }
118+
119+ // Log summary of zip code distribution
120+ logger .log ("ZIP CODE DISTRIBUTION SUMMARY:" );
121+ logger .log ("Messages with zip code starting with 1000: " + zip1000Count );
122+ logger .log ("Messages with zip code starting with 2000: " + zip2000Count );
123+ logger .log ("Other zip code formats: " + (messageCount - zip1000Count - zip2000Count ));
97124 }
98125
99- return "Successfully sent 10 AVRO messages to Kafka topic: " + kafkaTopic ;
126+ return "Successfully sent " + messageCount + " AVRO messages to Kafka topic: " + kafkaTopic +
127+ " (Zip codes: " + zip1000Count + " with prefix 1000, " + zip2000Count + " with prefix 2000)" ;
100128 } catch (Exception e ) {
101129 logger .log ("Error sending AVRO message: " + e .getMessage ());
102130 e .printStackTrace ();
@@ -121,7 +149,17 @@ private Contact createContactFromEvent(Map<String, Object> event) {
121149 contact .setCity (getStringValue (event , "city" , "AnyCity" ));
122150 contact .setCounty (getStringValue (event , "county" , "AnyCounty" ));
123151 contact .setState (getStringValue (event , "state" , "AnyState" ));
124- contact .setZip (getStringValue (event , "zip" , "1000" + randomDigit ()));
152+
153+ // Generate zip code starting with 1000 50% of the time and 2000 the other 50%
154+ if (event .containsKey ("zip" ) && event .get ("zip" ) != null ) {
155+ // If zip is provided in the event, use it as is
156+ contact .setZip (event .get ("zip" ).toString ());
157+ } else {
158+ // 50% chance for each prefix
159+ String prefix = Math .random () < 0.5 ? "1000" : "2000" ;
160+ contact .setZip (prefix + randomDigit ());
161+ }
162+
125163 contact .setHomePhone (getStringValue (event , "homePhone" , "555-123-" + randomDigits (4 )));
126164 contact .setCellPhone (getStringValue (event , "cellPhone" , "555-456-" + randomDigits (4 )));
127165 contact .setEmail (getStringValue (event , "email" , "user-" + randomSuffix () + "@example.com" ));
0 commit comments