Aaron Steigerwald created ARTEMIS-3031:
------------------------------------------

             Summary: Add SERVER_STOP_CALLED Notification
                 Key: ARTEMIS-3031
                 URL: https://issues.apache.org/jira/browse/ARTEMIS-3031
             Project: ActiveMQ Artemis
          Issue Type: New Feature
          Components: Broker
            Reporter: Aaron Steigerwald


There doesn't appear to be a way to tell when the Artemis server is starting to 
stop. This is needed to communicate with some web applications running inside 
the server's JVM. For example, it is needed to suspend or stop Camel before 
much of the Artemis server shuts down. Currently, most of the Artemis server's 
components shutdown before the WebServerComponent does, which contains web 
applications like Camel. A SERVER_STOP_CALLED Notification can be used to 
suspend or stop Camel via JMX before the Artemis server's acceptors shutdown.

One way to accomplish this is to:

1) Add a new SERVER_STOP_CALLED enum to 
org.apache.activemq.artemis.api.core.management.CoreNotificationType.

2) Send a SERVER_STOP_CALLED Notification in 
org.apache.activemq.artemis.cli.commands.Run.stop() like the following:
{noformat}
         if (server != null) {
            // Start new code
            TypedProperties props = new TypedProperties();
            props.putSimpleStringProperty(new SimpleString("callingClass"), new 
SimpleString(this.getClass().getName()));
            props.putSimpleStringProperty(new SimpleString("callingMethod"), 
new SimpleString("stop"));
            server.getServer().getManagementService().sendNotification(new 
Notification(null, SyndeoNotificationType.SERVER_STOP_CALLED, props));
            // End new code

            server.stop(true);
         }{noformat}
Without this feature, web applications like Camel can take a long time to 
shutdown depending on the configuration. Also, the shutdown can appear 
ungraceful and it's unclear what impact it has on inflight messages.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to