public void unregisterMultiUserChatService(@Nonnull final String subdomain, final boolean allNodes) {
        Log.debug("Unregistering MUC service '{}'", subdomain);
        final MultiUserChatService service = mucServices.remove(subdomain);
        if (service != null) {
            service.shutdown();
            try {
                ComponentManagerFactory.getComponentManager().removeComponent(subdomain);
            }
            catch (ComponentException e) {
                Log.error("Unable to remove MUC service '{}' from component manager.", subdomain, e);
                mucServices.put(subdomain, service);
            }
        }
        if (allNodes) {
            Log.trace("Sending 'service removed' event for MUC service '{}' to all other cluster nodes.", subdomain);
            CacheFactory.doClusterTask(new ServiceRemovedEvent(subdomain));
        }
    }
Unregisters a MultiUserChatService from the manager.

It can be used to explicitly unregister services, and is also used internally to unregister database stored services.

Triggers the service to shut down.

This method has a boolean parameter that controls whether a 'service removed' event is to be sent to all other
cluster nodes. This generally is desirable when a pre-existing service is being removed. A reason to _not_ send
such an event is when this method is being invoked as a result of receiving/processing such an event that was
received from another cluster node, or when shutting down this instance (as the service might continue to live on
other cluster nodes).

@param subdomain The subdomain of the service to be unregistered.
@param allNodes true if a 'service removed' event needs to be sent to other cluster nodes.
@see #removeMultiUserChatService(String)
xmppserver/src/main/java/org/jivesoftware/openfire/muc/MultiUserChatManager.java