[ 
https://issues.apache.org/jira/browse/ARTEMIS-3031?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aaron Steigerwald updated ARTEMIS-3031:
---------------------------------------
    Attachment: 
Artemis_Camel_shutdown_without_SERVER_STOP_CALLED_Notification.txt

> 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
>            Priority: Minor
>         Attachments: 
> Artemis_Camel_shutdown_with_SERVER_STOP_CALLED_Notification.txt, 
> Artemis_Camel_shutdown_without_SERVER_STOP_CALLED_Notification.txt
>
>
> 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