You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Clebert Suconic (Jira)" <ji...@apache.org> on 2021/02/09 21:25:07 UTC

[jira] [Closed] (ARTEMIS-3031) Add new callback for broker deactivation

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

Clebert Suconic closed ARTEMIS-3031.
------------------------------------

> Add new callback for broker deactivation
> ----------------------------------------
>
>                 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
>             Fix For: 2.17.0
>
>         Attachments: Artemis_Camel_shutdown_with_SERVER_STOP_CALLED_Notification.txt, Artemis_Camel_shutdown_without_SERVER_STOP_CALLED_Notification.txt
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> 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)