3030import java .nio .charset .StandardCharsets ;
3131import java .util .Optional ;
3232import java .util .concurrent .ExecutionException ;
33+ import java .util .concurrent .TimeUnit ;
3334import java .util .logging .Level ;
3435import java .util .logging .Logger ;
3536
@@ -40,7 +41,8 @@ public class PublishMessage implements HttpFunction {
4041 private static final Logger logger = Logger .getLogger (PublishMessage .class .getName ());
4142
4243 @ Override
43- public void service (HttpRequest request , HttpResponse response ) throws IOException {
44+ public void service (HttpRequest request , HttpResponse response )
45+ throws IOException , InterruptedException {
4446 Optional <String > maybeTopicName = request .getFirstQueryParameter ("topic" );
4547 Optional <String > maybeMessage = request .getFirstQueryParameter ("message" );
4648
@@ -72,6 +74,12 @@ public void service(HttpRequest request, HttpResponse response) throws IOExcepti
7274 } catch (InterruptedException | ExecutionException e ) {
7375 logger .log (Level .SEVERE , "Error publishing Pub/Sub message: " + e .getMessage (), e );
7476 responseMessage = "Error publishing Pub/Sub message; see logs for more info." ;
77+ } finally {
78+ if (publisher != null ) {
79+ // When finished with the publisher, shutdown to free up resources.
80+ publisher .shutdown ();
81+ publisher .awaitTermination (1 , TimeUnit .MINUTES );
82+ }
7583 }
7684
7785 responseWriter .write (responseMessage );
0 commit comments