Justin Bertram 10adca5479 ARTEMIS-4923 reduce synchronization in ManagementServiceImpl
The `ManagementService` is used by the broker to register and
unregister components for management as well as send notifications.
When the broker is busy dealing with new sessions and auto-creating
queues, addresses, etc. there is a lot of contention.

To reduce synchronization and improve the service overall this commit
does the following:

 - Remove `synchronized` from most methods. In most cases it's
   completely unnecessary because the methods are already using a
   thread-safe data-structure (e.g. `ConcurrentHashMap`) or more
   specific synchronization is already in place (e.g. on
   `mbeanServer`).
 - Adds new & clarifies existing logging.
 - Synchronizes `start` & `stop` methods and adds gates via `started`.
 - Simplifies the `sendNotification` method by synchronizing once rather
   than twice and performing legitimacy checks sooner.
 - Removing an unnecessary overload of the `registereQueue` method.

To be clear, there are no tests included with this commit as there
should be no semantic changes. Existing tests should be sufficient to
identify any regressions.
2024-07-23 09:19:18 -07:00
2024-07-22 18:57:27 -04:00
2014-11-19 16:01:54 -05:00
2015-05-30 08:37:28 +02:00
2024-02-19 16:06:40 -06:00

Welcome to Apache ActiveMQ Artemis

ActiveMQ Artemis is the next generation message broker from Apache ActiveMQ.

Getting Started

See the User Manual for an in-depth explanation of all aspects of broker configuration and behavior.

The ActiveMQ Artemis Examples repository contains over 90 examples demonstrating many of the client and broker features.

How to Build, etc.

See the Hacking Guide for details about modifying the code, building the project, running tests, IDE integration, etc.

Migrate from ActiveMQ Classic

See the Migration Guide for information about the architectural and configuration differences between ActiveMQ Classic and ActiveMQ Artemis.

Report an Issue

See our website for details on how to report an bug, request a feature, etc.

Languages
Java 98.2%
JavaScript 0.8%
Groovy 0.5%
Shell 0.3%
CSS 0.1%