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)