[
https://issues.apache.org/jira/browse/AMQ-3692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13756105#comment-13756105
]
metatech commented on AMQ-3692:
-------------------------------
For the record, this design choice has the following impact : in a cluster of 2
nodes with a common database (using the DefaultDatabaseLocker), it means that
when both nodes have at some point lost their connection to the database, none
of the 2 ActiveMQ broker nodes is not restarted anymore and therefore all JMS
routes are in error until a manual restart of the ActiveMQ broker bundle is
launched.
For our mission-critical usage of ServiceMix, this was not considered as
acceptable and this is the reason why we created the BrokerBundleWatcher.
Another (less elegant) solution would be to write a script that monitors the
broker and restarts the ActiveMQ broker in case of error.
> ActiveMQ OSGi bundle should be stopped when broker stops itself
> ---------------------------------------------------------------
>
> Key: AMQ-3692
> URL: https://issues.apache.org/jira/browse/AMQ-3692
> Project: ActiveMQ
> Issue Type: New Feature
> Components: Broker
> Affects Versions: 5.4.2
> Environment: ServiceMix 4.3
> Reporter: metatech
> Assignee: Hiram Chirino
> Fix For: 5.9.0
>
> Attachments: activemq-broker.xml, BrokerBundleWatcher.patch,
> BrokerBundleWatcher_v2.patch, BrokerBundleWatcher_v3.patch,
> BrokerService.patch
>
>
> In case of error, the ActiveMQ broker can stop itself.
> In an OSGi/Blueprint environment, the bundle is however still in
> Active/Created state, which misleads an external monitoring software into
> thinking that the broker is running fine.
> This patch stops the bundle when the broker stops itself.
> This patch can also auto-restart the bundle, which will restart the broker.
> This is critical in an Master/Slave configuration : when the connection to
> the database is lost, the broker cannot maintain the DB exclusive lock, and
> it stops itself. The bundle should be stopped and started again, so that it
> enters again the "Creating" state, in which it waits to obtain the DB lock
> again.
> The class "BrokerBundleWatcher" needs to be registered with the
> "shutdownHooks" property of the ActiveMQ "BrokerService". However, there is
> a limitation with the XBean syntax in a Blueprint XML, which does not allow
> to define inner beans. The workaround is to define the "activemq-broker.xml"
> in full native Blueprint syntax (no XBean).
> The patch also provides a modified version of the BrokerService, that injects
> its own reference into the ShutdownHook's which implement the
> "BrokerServiceAware" interface.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira