You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by j0llyr0g3r <ti...@wincor-nixdorf.com> on 2007/07/31 13:15:05 UTC
Simple network of brokers + faultPersistenceAdapterFactory -
Journal is locked
Hey folks,
i am really getting desperate with the configuration of a simple network of
brokers...
What i wanted to do was:
- One instance of activeMQ
- 3 brokers running within that instance
- 1 Producer and 2 Consumers
In Ascii:
Consumer Consumer
| |
broker_A broker_C
\ /
\ /
\/
broker_B
^
|
Producer
So i thought the following broker-config.xml would do the trick:
Broker_B listens on Port 61616 and knows the brokers "A" and "C" which
should be listening on 61617 and 61618:
Broker_B:
<broker brokerName="broker_B" useJmx="true"
xmlns="http://activemq.org/config/1.0">
<!-- Use the following to configure how ActiveMQ is exposed in JMX -->
<managementContext>
<managementContext connectorPort="5555"
jmxDomainName="org.apache.activemq"/>
</managementContext>
<persistenceAdapter>
<journaledJDBC journalLogFiles="5"
dataDirectory="${activemq.base}/activemq-data/broker_B/"/>
</persistenceAdapter>
<destinationPolicy>
<policyMap><policyEntries>
<policyEntry topic="FOO">
<dispatchPolicy>
<strictOrderDispatchPolicy />
</dispatchPolicy>
<subscriptionRecoveryPolicy>
<lastImageSubscriptionRecoveryPolicy />
</subscriptionRecoveryPolicy>
</policyEntry>
</policyEntries></policyMap>
</destinationPolicy>
<transportConnectors>
<transportConnector uri="tcp://localhost:61616"
discoveryUri="multicast://default"/>
</transportConnectors>
<networkConnectors>
<networkConnector
uri="static://(tcp://localhost:61617,tcp://localhost:61618)" networkTTL="99"
/>
</networkConnectors>
</broker>
Broker_A:
<broker brokerName="broker_A" useJmx="true"
xmlns="http://activemq.org/config/1.0">
<!-- Use the following to configure how ActiveMQ is exposed in JMX -->
<managementContext>
<managementContext connectorPort="4444"
jmxDomainName="org.apache.activemq"/>
</managementContext>
<persistenceAdapter>
<journaledJDBC journalLogFiles="5"
dataDirectory="${activemq.base}/activemq-data/broker_A/"/>
</persistenceAdapter>
<!-- In ActiveMQ 4, you can setup destination policies -->
<destinationPolicy>
<policyMap><policyEntries>
<policyEntry topic="FOO">
<dispatchPolicy>
<strictOrderDispatchPolicy />
</dispatchPolicy>
<subscriptionRecoveryPolicy>
<lastImageSubscriptionRecoveryPolicy />
</subscriptionRecoveryPolicy>
</policyEntry>
</policyEntries></policyMap>
</destinationPolicy>
<transportConnectors>
<transportConnector uri="tcp://localhost:61617"
discoveryUri="multicast://default"/>
</transportConnectors>
<networkConnectors>
<networkConnector uri="static://(tcp://localhost:61616)"
networkTTL="99"/>
</networkConnectors>
</broker>
Broker_C:
<broker brokerName="broker_C" useJmx="true"
xmlns="http://activemq.org/config/1.0">
<!-- Use the following to configure how ActiveMQ is exposed in JMX -->
<managementContext>
<managementContext connectorPort="6666"
jmxDomainName="org.apache.activemq"/>
</managementContext>
<persistenceAdapter>
<journaledJDBC journalLogFiles="5"
dataDirectory="${activemq.base}/activemq-data/broker_C/"/>
</persistenceAdapter>
<!-- In ActiveMQ 4, you can setup destination policies -->
<destinationPolicy>
<policyMap><policyEntries>
<policyEntry topic="FOO">
<dispatchPolicy>
<strictOrderDispatchPolicy />
</dispatchPolicy>
<subscriptionRecoveryPolicy>
<lastImageSubscriptionRecoveryPolicy />
</subscriptionRecoveryPolicy>
</policyEntry>
</policyEntries></policyMap>
</destinationPolicy>
<transportConnectors>
<transportConnector uri="tcp://localhost:61618"
discoveryUri="multicast://default"/>
</transportConnectors>
<networkConnectors>
<networkConnector uri="static://(tcp://localhost:61616)"
networkTTL="99"/>
</networkConnectors>
</broker>
Unfortunately, if i try to start to start active-mq via:
./activemq
i get the following output:
ACTIVEMQ_HOME: /opt/apache-activemq-4.1.1
ACTIVEMQ_BASE: /opt/apache-activemq-4.1.1
Loading message broker from: xbean:activemq.xml
INFO BrokerService - ActiveMQ 4.1.1 JMS Message Broker
(broker_A) is starting
INFO BrokerService - For help or more information please
see: http://incubator.apache.org/activemq/
INFO ManagementContext - JMX consoles can connect to
service:jmx:rmi:///jndi/rmi://localhost:4444/jmxrmi
INFO JDBCPersistenceAdapter - Database driver recognized:
[apache_derby_embedded_jdbc_driver]
INFO DefaultDatabaseLocker - Attempting to acquire the exclusive
lock to become the Master broker
INFO DefaultDatabaseLocker - Becoming the master on dataSource:
org.apache.derby.jdbc.EmbeddedDataSource@1e55794
INFO JournalPersistenceAdapter - Journal Recovery Started from: Active
Journal: using 5 x 20.0 Megs at:
/opt/apache-activemq-4.1.1/activemq-data/broker_A/journal
INFO JournalPersistenceAdapter - Journal Recovered: 0 message(s) in
transactions recovered.
INFO TransportServerThreadSupport - Listening for connections at:
tcp://debln099:61617
INFO TransportConnector - Connector tcp://localhost:61617
Started
INFO NetworkConnector - Establishing network connection
between from vm:?network=true to tcp://localhost:61616
INFO BrokerService - ActiveMQ 4.1.1 JMS Message Broker
(null) is starting
INFO BrokerService - For help or more information please
see: http://incubator.apache.org/activemq/
INFO JDBCPersistenceAdapter - Database driver recognized:
[apache_derby_embedded_jdbc_driver]
INFO ManagementContext - JMX consoles can connect to
service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
INFO DefaultDatabaseLocker - Attempting to acquire the exclusive
lock to become the Master broker
INFO DefaultDatabaseLocker - Becoming the master on dataSource:
org.apache.derby.jdbc.EmbeddedDataSource@158291
INFO JournalPersistenceAdapter - Journal Recovery Started from: Active
Journal: using 2 x 20.0 Megs at:
/opt/apache-activemq-4.1.1/bin/activemq-data/null/journal
INFO JournalPersistenceAdapter - Journal Recovered: 0 message(s) in
transactions recovered.
INFO BrokerService - ActiveMQ JMS Message Broker (null,
ID:debln099-46244-1185883671408-1:1) started
INFO TransportConnector - Connector vm://null Started
WARN NetworkConnector - Could not start network bridge
between: vm:?network=true and: tcp://localhost:61616 due to:
java.net.ConnectException: Connection refused
INFO NetworkConnector - Network Connector bridge Started
INFO BrokerService - ActiveMQ JMS Message Broker
(broker_A, ID:debln099-46244-1185883671408-1:0) started
INFO NetworkConnector - Establishing network connection
between from vm:?network=true to tcp://localhost:61616
INFO TransportConnector - Connector vm://null Stopped
INFO BrokerService - ActiveMQ 4.1.1 JMS Message Broker
(null) is starting
INFO BrokerService - For help or more information please
see: http://incubator.apache.org/activemq/
INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
seconds for the journal to be unlocked.
WARN ManagementContext - Failed to start jmx connector: Cannot
bind to URL [rmi://localhost:1099/jmxrmi]:
javax.naming.NameAlreadyBoundException: jmxrmi [Root exception is
java.rmi.AlreadyBoundException: jmxrmi]
INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
seconds for the journal to be unlocked.
INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
seconds for the journal to be unlocked.
INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
seconds for the journal to be unlocked.
INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
seconds for the journal to be unlocked.
INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
seconds for the journal to be unlocked.
INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
seconds for the journal to be unlocked.
INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
seconds for the journal to be unlocked.
INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
seconds for the journal to be unlocked.
As you can see, only broker_A is starting.
Furthermore, every broker has a separate journal directory which is empty
before starting AMQ:
<persistenceAdapter>
<journaledJDBC journalLogFiles="5"
dataDirectory="${activemq.base}/activemq-data/broker_C/"/>
</persistenceAdapter>
What the hack is wrong? To me the configuration seems to be right, can
somebody release me from my misery?
Why do the journal lock error?
Thx in advance.....
--
View this message in context: http://www.nabble.com/Simple-network-of-brokers-%2B-faultPersistenceAdapterFactory---Journal-is-locked-tf4192402s2354.html#a11922240
Sent from the ActiveMQ - User mailing list archive at Nabble.com.
Re: Simple network of brokers + faultPersistenceAdapterFactory - Journal is locked
Posted by Rob Davies <ra...@gmail.com>.
Thanks for posting the solution - we need to make the error message
more explicit
cheers,
Rob
'Go Get Integrated - ride the Camel! - http://activemq.apache.org/
camel/'
http://rajdavies.blogspot.com/
On Jul 31, 2007, at 3:59 PM, j0llyr0g3r wrote:
>
> Hi,
>
> after hours of searching i found the error:
>
> DO NOT USE UNDERSCORES IN YOUR BROKERNAMES.
>
> This really took me hours until i stumbled occasionally over it in the
> documentation.
>
> This is quite logical, IF you are aware of the fact, that
> brokernames get
> translated to URLs.
>
> Well, i was aware of that, but i didn't think of it.
>
> The error message was not really helping. In fact, the error
> message was
> quite the opposite because it kept me on searching why the hack i
> would get
> journal errors although i had disabled all journalling.
>
> Anyway, here is the working config if somebody is interested.
> Hopefully
> another beginner like me will find it usefull:
>
> <!--
> Broker-architecture:
>
> Consumer Consumer
> | |
> firstReceiverBroker secondReceiverBroker
> \ /
> \ /
> \ /
> middleBroker
> ^
> |
> Producer
>
> CLI-Calls for testing:
>
> ant consumer -Durl=tcp://localhost:61626 -Dsubject=FOO -
> Dtopic=true
> ant consumer -Durl=tcp://localhost:61636 -Dsubject=FOO -Dtopic=true
>
> ant producer -Durl=tcp://localhost:61616 -Dsubject=FOO -Dtopic=true
>
> -->
>
> <beans>
>
> <bean
> class="org.springframework.beans.factory.config.PropertyPlaceholderCon
> figurer"/>
>
> <broker brokerName="firstReceiverBroker" useJmx="true"
> xmlns="http://activemq.org/config/1.0">
>
> <managementContext>
> <managementContext connectorPort="4444"
> jmxDomainName="org.apache.activemq"/>
> </managementContext>
>
> <destinationPolicy>
> <policyMap><policyEntries>
>
> <policyEntry topic="FOO">
> <dispatchPolicy>
> <strictOrderDispatchPolicy />
> </dispatchPolicy>
> <subscriptionRecoveryPolicy>
> <lastImageSubscriptionRecoveryPolicy />
> </subscriptionRecoveryPolicy>
> </policyEntry>
>
> </policyEntries></policyMap>
> </destinationPolicy>
>
> <transportConnectors>
>
> <transportConnector uri="tcp://localhost:61636"
> discoveryUri="multicast://default"/>
> </transportConnectors>
>
> <networkConnectors>
> <networkConnector uri="static://(tcp://localhost:61616)"
> failover="true" networkTTL="99"/>
> </networkConnectors>
>
> </broker>
>
> <broker brokerName="secondReceiverBroker" useJmx="true"
> xmlns="http://activemq.org/config/1.0">
>
> <managementContext>
> <managementContext connectorPort="6666"
> jmxDomainName="org.apache.activemq"/>
> </managementContext>
>
> <destinationPolicy>
> <policyMap><policyEntries>
>
> <policyEntry topic="FOO">
> <dispatchPolicy>
> <strictOrderDispatchPolicy />
> </dispatchPolicy>
> <subscriptionRecoveryPolicy>
> <lastImageSubscriptionRecoveryPolicy />
> </subscriptionRecoveryPolicy>
> </policyEntry>
>
> </policyEntries></policyMap>
> </destinationPolicy>
>
>
> <transportConnectors>
>
> <transportConnector uri="tcp://localhost:61626"
> discoveryUri="multicast://default"/>
> </transportConnectors>
>
> <networkConnectors>
> <networkConnector uri="static://(tcp://localhost:61616)"
> failover="true" networkTTL="99"/>
> </networkConnectors>
>
> </broker>
> <broker brokerName="middleBroker" useJmx="true"
> xmlns="http://activemq.org/config/1.0">
>
> <managementContext>
> <managementContext connectorPort="6666"
> jmxDomainName="org.apache.activemq"/>
> </managementContext>
>
> <destinationPolicy>
> <policyMap><policyEntries>
>
> <policyEntry topic="FOO">
> <dispatchPolicy>
> <strictOrderDispatchPolicy />
> </dispatchPolicy>
> <subscriptionRecoveryPolicy>
> <lastImageSubscriptionRecoveryPolicy />
> </subscriptionRecoveryPolicy>
> </policyEntry>
>
> </policyEntries></policyMap>
> </destinationPolicy>
>
>
> <transportConnectors>
>
> <transportConnector uri="tcp://localhost:61616"
> discoveryUri="multicast://default"/>
> </transportConnectors>
>
> <networkConnectors>
> <networkConnector
> uri="static://(tcp://localhost:61626,tcp://localhost:61636)"
> failover="true"
> networkTTL="99"/>
> </networkConnectors>
>
> </broker>
>
> </beans>
>
>
>
> ttmdev wrote:
>>
>> I ran across a similar set of problems when setting up a 3-broker
>> NoB on
>> my Windows XP machine and addressed it by simply assigning each
>> broker
>> it's own separate ${activemq.base}. If you don't do that, you end
>> up with
>> a shared file system Master/Slave configuration. Here's my
>> configuration:
>>
>> <broker brokerName="localhost" useJmx="true"
>> xmlns="http://activemq.org/config/1.0">
>>
>>
>> <!-- Use the following to configure how ActiveMQ is exposed in
>> JMX -->
>> <managementContext>
>> <managementContext connectorPort="1099"
>> jmxDomainName="org.apache.activemq"/>
>> </managementContext>
>>
>>
>> <!-- In ActiveMQ 4, you can setup destination policies -->
>> <destinationPolicy>
>> <policyMap><policyEntries>
>>
>> <policyEntry topic="FOO.>">
>> <dispatchPolicy>
>> <strictOrderDispatchPolicy />
>> </dispatchPolicy>
>> <subscriptionRecoveryPolicy>
>> <lastImageSubscriptionRecoveryPolicy />
>> </subscriptionRecoveryPolicy>
>> </policyEntry>
>>
>> </policyEntries></policyMap>
>> </destinationPolicy>
>>
>> <persistenceAdapter>
>> <journaledJDBC journalLogFiles="5"
>> dataDirectory="${activemq.base}/activemq-data"/>
>> </persistenceAdapter>
>>
>> <transportConnectors>
>> <transportConnector name="openwire" uri="tcp://localhost:
>> 61616"
>> discoveryUri="multicast://default"/>
>> <transportConnector name="ssl" uri="ssl://localhost:
>> 61617"/>
>> <transportConnector name="stomp" uri="stomp://localhost:
>> 61613"/>
>> </transportConnectors>
>>
>> <networkConnectors>
>> <!-- This broker is going to just listen for other brokers -->
>> <!--
>> <networkConnector name="default-nc" uri="multicast://
>> default"/>
>> -->
>> </networkConnectors>
>>
>> <plugins>
>>
>> <!-- use JAAS to authenticate using the login.config file on the
>> classpath to configure JAAS -->
>> <!-- <jaasAuthenticationPlugin configuration="activemq-
>> domain" /> -->
>> </plugins>
>>
>> </broker>
>>
>>
>> <broker brokerName="localhost2" useJmx="true"
>> xmlns="http://activemq.org/config/1.0">
>>
>> <!-- Use the following to configure how ActiveMQ is exposed in
>> JMX -->
>> <managementContext>
>> <managementContext connectorPort="1098"
>> jmxDomainName="org.apache.activemq"/>
>> </managementContext>
>>
>>
>> <!-- In ActiveMQ 4, you can setup destination policies -->
>> <destinationPolicy>
>> <policyMap><policyEntries>
>>
>> <policyEntry topic="FOO.>">
>> <dispatchPolicy>
>> <strictOrderDispatchPolicy />
>> </dispatchPolicy>
>> <subscriptionRecoveryPolicy>
>> <lastImageSubscriptionRecoveryPolicy />
>> </subscriptionRecoveryPolicy>
>> </policyEntry>
>>
>> </policyEntries></policyMap>
>> </destinationPolicy>
>>
>> <persistenceAdapter>
>> <journaledJDBC journalLogFiles="5"
>> dataDirectory="/tmp/amq-base2/activemq-data"/>
>> </persistenceAdapter>
>>
>> <transportConnectors>
>> <transportConnector name="openwire2" uri="tcp://localhost:
>> 61618"
>> discoveryUri="multicast://default"/>
>> </transportConnectors>
>>
>> <networkConnectors>
>> <networkConnector name="localhost2"
>> uri="static://(tcp://localhost:61616)" />
>> </networkConnectors>
>>
>> <plugins>
>> <!-- use JAAS to authenticate using the login.config file on the
>> classpath to configure JAAS -->
>> <!-- <jaasAuthenticationPlugin configuration="activemq-
>> domain" /> -->
>> </plugins>
>>
>> </broker>
>>
>>
>> <broker brokerName="localhost3" useJmx="true"
>> xmlns="http://activemq.org/config/1.0">
>>
>>
>> <!-- In ActiveMQ 4, you can setup destination policies -->
>> <destinationPolicy>
>> <policyMap><policyEntries>
>>
>> <policyEntry topic="FOO.>">
>> <dispatchPolicy>
>> <strictOrderDispatchPolicy />
>> </dispatchPolicy>
>> <subscriptionRecoveryPolicy>
>> <lastImageSubscriptionRecoveryPolicy />
>> </subscriptionRecoveryPolicy>
>> </policyEntry>
>>
>> </policyEntries></policyMap>
>> </destinationPolicy>
>>
>> <!-- Use the following to configure how ActiveMQ is exposed
>> in JMX
>> -->
>> <managementContext>
>> <managementContext connectorPort="1097"
>> jmxDomainName="org.apache.activemq"/>
>> </managementContext>
>>
>> <persistenceAdapter>
>> <journaledJDBC journalLogFiles="5"
>> dataDirectory="/tmp/amq-base3/activemq-data"/>
>> </persistenceAdapter>
>>
>> <transportConnectors>
>> <transportConnector name="openwire3" uri="tcp://localhost:
>> 61619"
>> discoveryUri="multicast://default"/>
>> </transportConnectors>
>>
>> <networkConnectors>
>> <networkConnector name="localhost3"
>> uri="static://(tcp://localhost:61616)" />
>> </networkConnectors>
>>
>> <plugins>
>> <!-- use JAAS to authenticate using the login.config file on the
>> classpath to configure JAAS -->
>> <!-- <jaasAuthenticationPlugin configuration="activemq-
>> domain" /> -->
>> </plugins>
>>
>> </broker>
>>
>> Hope this helps,
>> Joe
>>
>>
>> j0llyr0g3r wrote:
>>>
>>> Hey folks,
>>>
>>> i am really getting desperate with the configuration of a simple
>>> network
>>> of brokers...
>>>
>>> What i wanted to do was:
>>>
>>> - One instance of activeMQ
>>> - 3 brokers running within that instance
>>> - 1 Producer and 2 Consumers
>>>
>>> In Ascii:
>>>
>>> Consumer Consumer
>>> | |
>>> broker_A broker_C
>>> \ /
>>> \ /
>>> \/
>>> broker_B
>>> ^
>>> |
>>> Producer
>>>
>>> So i thought the following broker-config.xml would do the trick:
>>>
>>> Broker_B listens on Port 61616 and knows the brokers "A" and "C"
>>> which
>>> should be listening on 61617 and 61618:
>>>
>>> Broker_B:
>>>
>>> <broker brokerName="broker_B" useJmx="true"
>>> xmlns="http://activemq.org/config/1.0">
>>>
>>> <!-- Use the following to configure how ActiveMQ is exposed
>>> in JMX
>>> -->
>>> <managementContext>
>>> <managementContext connectorPort="5555"
>>> jmxDomainName="org.apache.activemq"/>
>>> </managementContext>
>>>
>>> <persistenceAdapter>
>>> <journaledJDBC journalLogFiles="5"
>>> dataDirectory="${activemq.base}/activemq-data/broker_B/"/>
>>> </persistenceAdapter>
>>>
>>> <destinationPolicy>
>>> <policyMap><policyEntries>
>>>
>>> <policyEntry topic="FOO">
>>> <dispatchPolicy>
>>> <strictOrderDispatchPolicy />
>>> </dispatchPolicy>
>>> <subscriptionRecoveryPolicy>
>>> <lastImageSubscriptionRecoveryPolicy />
>>> </subscriptionRecoveryPolicy>
>>> </policyEntry>
>>>
>>> </policyEntries></policyMap>
>>> </destinationPolicy>
>>>
>>>
>>> <transportConnectors>
>>> <transportConnector uri="tcp://localhost:61616"
>>> discoveryUri="multicast://default"/>
>>> </transportConnectors>
>>>
>>> <networkConnectors>
>>> <networkConnector
>>> uri="static://(tcp://localhost:61617,tcp://localhost:61618)"
>>> networkTTL="99" />
>>> </networkConnectors>
>>>
>>> </broker>
>>>
>>>
>>> Broker_A:
>>>
>>> <broker brokerName="broker_A" useJmx="true"
>>> xmlns="http://activemq.org/config/1.0">
>>>
>>> <!-- Use the following to configure how ActiveMQ is exposed
>>> in JMX
>>> -->
>>> <managementContext>
>>> <managementContext connectorPort="4444"
>>> jmxDomainName="org.apache.activemq"/>
>>> </managementContext>
>>>
>>> <persistenceAdapter>
>>> <journaledJDBC journalLogFiles="5"
>>> dataDirectory="${activemq.base}/activemq-data/broker_A/"/>
>>> </persistenceAdapter>
>>>
>>> <!-- In ActiveMQ 4, you can setup destination policies -->
>>> <destinationPolicy>
>>> <policyMap><policyEntries>
>>> <policyEntry topic="FOO">
>>> <dispatchPolicy>
>>> <strictOrderDispatchPolicy />
>>> </dispatchPolicy>
>>> <subscriptionRecoveryPolicy>
>>> <lastImageSubscriptionRecoveryPolicy />
>>> </subscriptionRecoveryPolicy>
>>> </policyEntry>
>>> </policyEntries></policyMap>
>>> </destinationPolicy>
>>>
>>> <transportConnectors>
>>> <transportConnector uri="tcp://localhost:61617"
>>> discoveryUri="multicast://default"/>
>>> </transportConnectors>
>>>
>>> <networkConnectors>
>>> <networkConnector uri="static://(tcp://localhost:61616)"
>>> networkTTL="99"/>
>>> </networkConnectors>
>>>
>>> </broker>
>>>
>>>
>>> Broker_C:
>>>
>>> <broker brokerName="broker_C" useJmx="true"
>>> xmlns="http://activemq.org/config/1.0">
>>>
>>> <!-- Use the following to configure how ActiveMQ is exposed
>>> in JMX
>>> -->
>>> <managementContext>
>>> <managementContext connectorPort="6666"
>>> jmxDomainName="org.apache.activemq"/>
>>> </managementContext>
>>>
>>> <persistenceAdapter>
>>> <journaledJDBC journalLogFiles="5"
>>> dataDirectory="${activemq.base}/activemq-data/broker_C/"/>
>>> </persistenceAdapter>
>>>
>>> <!-- In ActiveMQ 4, you can setup destination policies -->
>>> <destinationPolicy>
>>> <policyMap><policyEntries>
>>>
>>> <policyEntry topic="FOO">
>>> <dispatchPolicy>
>>> <strictOrderDispatchPolicy />
>>> </dispatchPolicy>
>>> <subscriptionRecoveryPolicy>
>>> <lastImageSubscriptionRecoveryPolicy />
>>> </subscriptionRecoveryPolicy>
>>> </policyEntry>
>>>
>>> </policyEntries></policyMap>
>>> </destinationPolicy>
>>>
>>>
>>> <transportConnectors>
>>>
>>> <transportConnector uri="tcp://localhost:61618"
>>> discoveryUri="multicast://default"/>
>>> </transportConnectors>
>>>
>>> <networkConnectors>
>>> <networkConnector uri="static://(tcp://localhost:61616)"
>>> networkTTL="99"/>
>>> </networkConnectors>
>>>
>>> </broker>
>>>
>>> Unfortunately, if i try to start to start active-mq via:
>>>
>>> ./activemq
>>>
>>> i get the following output:
>>>
>>> ACTIVEMQ_HOME: /opt/apache-activemq-4.1.1
>>> ACTIVEMQ_BASE: /opt/apache-activemq-4.1.1
>>> Loading message broker from: xbean:activemq.xml
>>> INFO BrokerService - ActiveMQ 4.1.1 JMS Message
>>> Broker
>>> (broker_A) is starting
>>> INFO BrokerService - For help or more information
>>> please see: http://incubator.apache.org/activemq/
>>> INFO ManagementContext - JMX consoles can connect to
>>> service:jmx:rmi:///jndi/rmi://localhost:4444/jmxrmi
>>> INFO JDBCPersistenceAdapter - Database driver recognized:
>>> [apache_derby_embedded_jdbc_driver]
>>> INFO DefaultDatabaseLocker - Attempting to acquire the
>>> exclusive lock to become the Master broker
>>> INFO DefaultDatabaseLocker - Becoming the master on
>>> dataSource:
>>> org.apache.derby.jdbc.EmbeddedDataSource@1e55794
>>> INFO JournalPersistenceAdapter - Journal Recovery Started
>>> from:
>>> Active Journal: using 5 x 20.0 Megs at:
>>> /opt/apache-activemq-4.1.1/activemq-data/broker_A/journal
>>> INFO JournalPersistenceAdapter - Journal Recovered: 0
>>> message(s) in
>>> transactions recovered.
>>> INFO TransportServerThreadSupport - Listening for connections at:
>>> tcp://debln099:61617
>>> INFO TransportConnector - Connector tcp://localhost:
>>> 61617
>>> Started
>>> INFO NetworkConnector - Establishing network
>>> connection
>>> between from vm:?network=true to tcp://localhost:61616
>>> INFO BrokerService - ActiveMQ 4.1.1 JMS Message
>>> Broker
>>> (null) is starting
>>> INFO BrokerService - For help or more information
>>> please see: http://incubator.apache.org/activemq/
>>> INFO JDBCPersistenceAdapter - Database driver recognized:
>>> [apache_derby_embedded_jdbc_driver]
>>> INFO ManagementContext - JMX consoles can connect to
>>> service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
>>> INFO DefaultDatabaseLocker - Attempting to acquire the
>>> exclusive lock to become the Master broker
>>> INFO DefaultDatabaseLocker - Becoming the master on
>>> dataSource:
>>> org.apache.derby.jdbc.EmbeddedDataSource@158291
>>> INFO JournalPersistenceAdapter - Journal Recovery Started
>>> from:
>>> Active Journal: using 2 x 20.0 Megs at:
>>> /opt/apache-activemq-4.1.1/bin/activemq-data/null/journal
>>> INFO JournalPersistenceAdapter - Journal Recovered: 0
>>> message(s) in
>>> transactions recovered.
>>> INFO BrokerService - ActiveMQ JMS Message
>>> Broker (null,
>>> ID:debln099-46244-1185883671408-1:1) started
>>> INFO TransportConnector - Connector vm://null Started
>>> WARN NetworkConnector - Could not start network
>>> bridge
>>> between: vm:?network=true and: tcp://localhost:61616 due to:
>>> java.net.ConnectException: Connection refused
>>> INFO NetworkConnector - Network Connector bridge
>>> Started
>>> INFO BrokerService - ActiveMQ JMS Message Broker
>>> (broker_A, ID:debln099-46244-1185883671408-1:0) started
>>> INFO NetworkConnector - Establishing network
>>> connection
>>> between from vm:?network=true to tcp://localhost:61616
>>> INFO TransportConnector - Connector vm://null Stopped
>>> INFO BrokerService - ActiveMQ 4.1.1 JMS Message
>>> Broker
>>> (null) is starting
>>> INFO BrokerService - For help or more information
>>> please see: http://incubator.apache.org/activemq/
>>> INFO faultPersistenceAdapterFactory - Journal is locked...
>>> waiting 10
>>> seconds for the journal to be unlocked.
>>> WARN ManagementContext - Failed to start jmx
>>> connector:
>>> Cannot bind to URL [rmi://localhost:1099/jmxrmi]:
>>> javax.naming.NameAlreadyBoundException: jmxrmi [Root exception is
>>> java.rmi.AlreadyBoundException: jmxrmi]
>>> INFO faultPersistenceAdapterFactory - Journal is locked...
>>> waiting 10
>>> seconds for the journal to be unlocked.
>>> INFO faultPersistenceAdapterFactory - Journal is locked...
>>> waiting 10
>>> seconds for the journal to be unlocked.
>>> INFO faultPersistenceAdapterFactory - Journal is locked...
>>> waiting 10
>>> seconds for the journal to be unlocked.
>>> INFO faultPersistenceAdapterFactory - Journal is locked...
>>> waiting 10
>>> seconds for the journal to be unlocked.
>>> INFO faultPersistenceAdapterFactory - Journal is locked...
>>> waiting 10
>>> seconds for the journal to be unlocked.
>>> INFO faultPersistenceAdapterFactory - Journal is locked...
>>> waiting 10
>>> seconds for the journal to be unlocked.
>>> INFO faultPersistenceAdapterFactory - Journal is locked...
>>> waiting 10
>>> seconds for the journal to be unlocked.
>>> INFO faultPersistenceAdapterFactory - Journal is locked...
>>> waiting 10
>>> seconds for the journal to be unlocked.
>>>
>>>
>>> As you can see, only broker_A is starting.
>>>
>>> Furthermore, every broker has a separate journal directory which
>>> is empty
>>> before starting AMQ:
>>>
>>>
>>> <persistenceAdapter>
>>> <journaledJDBC journalLogFiles="5"
>>> dataDirectory="${activemq.base}/activemq-data/broker_C/"/>
>>> </persistenceAdapter>
>>>
>>> What the hack is wrong? To me the configuration seems to be
>>> right, can
>>> somebody release me from my misery?
>>> Why do the journal lock error?
>>>
>>> Thx in advance.....
>>>
>>
>>
>
> --
> View this message in context: http://www.nabble.com/Simple-network-
> of-brokers-%2B-faultPersistenceAdapterFactory---Journal-is-locked-
> tf4192402s2354.html#a11925818
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
Re: Simple network of brokers + faultPersistenceAdapterFactory -
Journal is locked
Posted by j0llyr0g3r <ti...@wincor-nixdorf.com>.
Hi,
after hours of searching i found the error:
DO NOT USE UNDERSCORES IN YOUR BROKERNAMES.
This really took me hours until i stumbled occasionally over it in the
documentation.
This is quite logical, IF you are aware of the fact, that brokernames get
translated to URLs.
Well, i was aware of that, but i didn't think of it.
The error message was not really helping. In fact, the error message was
quite the opposite because it kept me on searching why the hack i would get
journal errors although i had disabled all journalling.
Anyway, here is the working config if somebody is interested. Hopefully
another beginner like me will find it usefull:
<!--
Broker-architecture:
Consumer Consumer
| |
firstReceiverBroker secondReceiverBroker
\ /
\ /
\ /
middleBroker
^
|
Producer
CLI-Calls for testing:
ant consumer -Durl=tcp://localhost:61626 -Dsubject=FOO -Dtopic=true
ant consumer -Durl=tcp://localhost:61636 -Dsubject=FOO -Dtopic=true
ant producer -Durl=tcp://localhost:61616 -Dsubject=FOO -Dtopic=true
-->
<beans>
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
<broker brokerName="firstReceiverBroker" useJmx="true"
xmlns="http://activemq.org/config/1.0">
<managementContext>
<managementContext connectorPort="4444"
jmxDomainName="org.apache.activemq"/>
</managementContext>
<destinationPolicy>
<policyMap><policyEntries>
<policyEntry topic="FOO">
<dispatchPolicy>
<strictOrderDispatchPolicy />
</dispatchPolicy>
<subscriptionRecoveryPolicy>
<lastImageSubscriptionRecoveryPolicy />
</subscriptionRecoveryPolicy>
</policyEntry>
</policyEntries></policyMap>
</destinationPolicy>
<transportConnectors>
<transportConnector uri="tcp://localhost:61636"
discoveryUri="multicast://default"/>
</transportConnectors>
<networkConnectors>
<networkConnector uri="static://(tcp://localhost:61616)"
failover="true" networkTTL="99"/>
</networkConnectors>
</broker>
<broker brokerName="secondReceiverBroker" useJmx="true"
xmlns="http://activemq.org/config/1.0">
<managementContext>
<managementContext connectorPort="6666"
jmxDomainName="org.apache.activemq"/>
</managementContext>
<destinationPolicy>
<policyMap><policyEntries>
<policyEntry topic="FOO">
<dispatchPolicy>
<strictOrderDispatchPolicy />
</dispatchPolicy>
<subscriptionRecoveryPolicy>
<lastImageSubscriptionRecoveryPolicy />
</subscriptionRecoveryPolicy>
</policyEntry>
</policyEntries></policyMap>
</destinationPolicy>
<transportConnectors>
<transportConnector uri="tcp://localhost:61626"
discoveryUri="multicast://default"/>
</transportConnectors>
<networkConnectors>
<networkConnector uri="static://(tcp://localhost:61616)"
failover="true" networkTTL="99"/>
</networkConnectors>
</broker>
<broker brokerName="middleBroker" useJmx="true"
xmlns="http://activemq.org/config/1.0">
<managementContext>
<managementContext connectorPort="6666"
jmxDomainName="org.apache.activemq"/>
</managementContext>
<destinationPolicy>
<policyMap><policyEntries>
<policyEntry topic="FOO">
<dispatchPolicy>
<strictOrderDispatchPolicy />
</dispatchPolicy>
<subscriptionRecoveryPolicy>
<lastImageSubscriptionRecoveryPolicy />
</subscriptionRecoveryPolicy>
</policyEntry>
</policyEntries></policyMap>
</destinationPolicy>
<transportConnectors>
<transportConnector uri="tcp://localhost:61616"
discoveryUri="multicast://default"/>
</transportConnectors>
<networkConnectors>
<networkConnector
uri="static://(tcp://localhost:61626,tcp://localhost:61636)" failover="true"
networkTTL="99"/>
</networkConnectors>
</broker>
</beans>
ttmdev wrote:
>
> I ran across a similar set of problems when setting up a 3-broker NoB on
> my Windows XP machine and addressed it by simply assigning each broker
> it's own separate ${activemq.base}. If you don't do that, you end up with
> a shared file system Master/Slave configuration. Here's my configuration:
>
> <broker brokerName="localhost" useJmx="true"
> xmlns="http://activemq.org/config/1.0">
>
>
> <!-- Use the following to configure how ActiveMQ is exposed in JMX -->
> <managementContext>
> <managementContext connectorPort="1099"
> jmxDomainName="org.apache.activemq"/>
> </managementContext>
>
>
> <!-- In ActiveMQ 4, you can setup destination policies -->
> <destinationPolicy>
> <policyMap><policyEntries>
>
> <policyEntry topic="FOO.>">
> <dispatchPolicy>
> <strictOrderDispatchPolicy />
> </dispatchPolicy>
> <subscriptionRecoveryPolicy>
> <lastImageSubscriptionRecoveryPolicy />
> </subscriptionRecoveryPolicy>
> </policyEntry>
>
> </policyEntries></policyMap>
> </destinationPolicy>
>
> <persistenceAdapter>
> <journaledJDBC journalLogFiles="5"
> dataDirectory="${activemq.base}/activemq-data"/>
> </persistenceAdapter>
>
> <transportConnectors>
> <transportConnector name="openwire" uri="tcp://localhost:61616"
> discoveryUri="multicast://default"/>
> <transportConnector name="ssl" uri="ssl://localhost:61617"/>
> <transportConnector name="stomp" uri="stomp://localhost:61613"/>
> </transportConnectors>
>
> <networkConnectors>
> <!-- This broker is going to just listen for other brokers -->
> <!--
> <networkConnector name="default-nc" uri="multicast://default"/>
> -->
> </networkConnectors>
>
> <plugins>
>
> <!-- use JAAS to authenticate using the login.config file on the
> classpath to configure JAAS -->
> <!-- <jaasAuthenticationPlugin configuration="activemq-domain" /> -->
> </plugins>
>
> </broker>
>
>
> <broker brokerName="localhost2" useJmx="true"
> xmlns="http://activemq.org/config/1.0">
>
> <!-- Use the following to configure how ActiveMQ is exposed in JMX -->
> <managementContext>
> <managementContext connectorPort="1098"
> jmxDomainName="org.apache.activemq"/>
> </managementContext>
>
>
> <!-- In ActiveMQ 4, you can setup destination policies -->
> <destinationPolicy>
> <policyMap><policyEntries>
>
> <policyEntry topic="FOO.>">
> <dispatchPolicy>
> <strictOrderDispatchPolicy />
> </dispatchPolicy>
> <subscriptionRecoveryPolicy>
> <lastImageSubscriptionRecoveryPolicy />
> </subscriptionRecoveryPolicy>
> </policyEntry>
>
> </policyEntries></policyMap>
> </destinationPolicy>
>
> <persistenceAdapter>
> <journaledJDBC journalLogFiles="5"
> dataDirectory="/tmp/amq-base2/activemq-data"/>
> </persistenceAdapter>
>
> <transportConnectors>
> <transportConnector name="openwire2" uri="tcp://localhost:61618"
> discoveryUri="multicast://default"/>
> </transportConnectors>
>
> <networkConnectors>
> <networkConnector name="localhost2"
> uri="static://(tcp://localhost:61616)" />
> </networkConnectors>
>
> <plugins>
> <!-- use JAAS to authenticate using the login.config file on the
> classpath to configure JAAS -->
> <!-- <jaasAuthenticationPlugin configuration="activemq-domain" /> -->
> </plugins>
>
> </broker>
>
>
> <broker brokerName="localhost3" useJmx="true"
> xmlns="http://activemq.org/config/1.0">
>
>
> <!-- In ActiveMQ 4, you can setup destination policies -->
> <destinationPolicy>
> <policyMap><policyEntries>
>
> <policyEntry topic="FOO.>">
> <dispatchPolicy>
> <strictOrderDispatchPolicy />
> </dispatchPolicy>
> <subscriptionRecoveryPolicy>
> <lastImageSubscriptionRecoveryPolicy />
> </subscriptionRecoveryPolicy>
> </policyEntry>
>
> </policyEntries></policyMap>
> </destinationPolicy>
>
> <!-- Use the following to configure how ActiveMQ is exposed in JMX
> -->
> <managementContext>
> <managementContext connectorPort="1097"
> jmxDomainName="org.apache.activemq"/>
> </managementContext>
>
> <persistenceAdapter>
> <journaledJDBC journalLogFiles="5"
> dataDirectory="/tmp/amq-base3/activemq-data"/>
> </persistenceAdapter>
>
> <transportConnectors>
> <transportConnector name="openwire3" uri="tcp://localhost:61619"
> discoveryUri="multicast://default"/>
> </transportConnectors>
>
> <networkConnectors>
> <networkConnector name="localhost3"
> uri="static://(tcp://localhost:61616)" />
> </networkConnectors>
>
> <plugins>
> <!-- use JAAS to authenticate using the login.config file on the
> classpath to configure JAAS -->
> <!-- <jaasAuthenticationPlugin configuration="activemq-domain" /> -->
> </plugins>
>
> </broker>
>
> Hope this helps,
> Joe
>
>
> j0llyr0g3r wrote:
>>
>> Hey folks,
>>
>> i am really getting desperate with the configuration of a simple network
>> of brokers...
>>
>> What i wanted to do was:
>>
>> - One instance of activeMQ
>> - 3 brokers running within that instance
>> - 1 Producer and 2 Consumers
>>
>> In Ascii:
>>
>> Consumer Consumer
>> | |
>> broker_A broker_C
>> \ /
>> \ /
>> \/
>> broker_B
>> ^
>> |
>> Producer
>>
>> So i thought the following broker-config.xml would do the trick:
>>
>> Broker_B listens on Port 61616 and knows the brokers "A" and "C" which
>> should be listening on 61617 and 61618:
>>
>> Broker_B:
>>
>> <broker brokerName="broker_B" useJmx="true"
>> xmlns="http://activemq.org/config/1.0">
>>
>> <!-- Use the following to configure how ActiveMQ is exposed in JMX
>> -->
>> <managementContext>
>> <managementContext connectorPort="5555"
>> jmxDomainName="org.apache.activemq"/>
>> </managementContext>
>>
>> <persistenceAdapter>
>> <journaledJDBC journalLogFiles="5"
>> dataDirectory="${activemq.base}/activemq-data/broker_B/"/>
>> </persistenceAdapter>
>>
>> <destinationPolicy>
>> <policyMap><policyEntries>
>>
>> <policyEntry topic="FOO">
>> <dispatchPolicy>
>> <strictOrderDispatchPolicy />
>> </dispatchPolicy>
>> <subscriptionRecoveryPolicy>
>> <lastImageSubscriptionRecoveryPolicy />
>> </subscriptionRecoveryPolicy>
>> </policyEntry>
>>
>> </policyEntries></policyMap>
>> </destinationPolicy>
>>
>>
>> <transportConnectors>
>> <transportConnector uri="tcp://localhost:61616"
>> discoveryUri="multicast://default"/>
>> </transportConnectors>
>>
>> <networkConnectors>
>> <networkConnector
>> uri="static://(tcp://localhost:61617,tcp://localhost:61618)"
>> networkTTL="99" />
>> </networkConnectors>
>>
>> </broker>
>>
>>
>> Broker_A:
>>
>> <broker brokerName="broker_A" useJmx="true"
>> xmlns="http://activemq.org/config/1.0">
>>
>> <!-- Use the following to configure how ActiveMQ is exposed in JMX
>> -->
>> <managementContext>
>> <managementContext connectorPort="4444"
>> jmxDomainName="org.apache.activemq"/>
>> </managementContext>
>>
>> <persistenceAdapter>
>> <journaledJDBC journalLogFiles="5"
>> dataDirectory="${activemq.base}/activemq-data/broker_A/"/>
>> </persistenceAdapter>
>>
>> <!-- In ActiveMQ 4, you can setup destination policies -->
>> <destinationPolicy>
>> <policyMap><policyEntries>
>> <policyEntry topic="FOO">
>> <dispatchPolicy>
>> <strictOrderDispatchPolicy />
>> </dispatchPolicy>
>> <subscriptionRecoveryPolicy>
>> <lastImageSubscriptionRecoveryPolicy />
>> </subscriptionRecoveryPolicy>
>> </policyEntry>
>> </policyEntries></policyMap>
>> </destinationPolicy>
>>
>> <transportConnectors>
>> <transportConnector uri="tcp://localhost:61617"
>> discoveryUri="multicast://default"/>
>> </transportConnectors>
>>
>> <networkConnectors>
>> <networkConnector uri="static://(tcp://localhost:61616)"
>> networkTTL="99"/>
>> </networkConnectors>
>>
>> </broker>
>>
>>
>> Broker_C:
>>
>> <broker brokerName="broker_C" useJmx="true"
>> xmlns="http://activemq.org/config/1.0">
>>
>> <!-- Use the following to configure how ActiveMQ is exposed in JMX
>> -->
>> <managementContext>
>> <managementContext connectorPort="6666"
>> jmxDomainName="org.apache.activemq"/>
>> </managementContext>
>>
>> <persistenceAdapter>
>> <journaledJDBC journalLogFiles="5"
>> dataDirectory="${activemq.base}/activemq-data/broker_C/"/>
>> </persistenceAdapter>
>>
>> <!-- In ActiveMQ 4, you can setup destination policies -->
>> <destinationPolicy>
>> <policyMap><policyEntries>
>>
>> <policyEntry topic="FOO">
>> <dispatchPolicy>
>> <strictOrderDispatchPolicy />
>> </dispatchPolicy>
>> <subscriptionRecoveryPolicy>
>> <lastImageSubscriptionRecoveryPolicy />
>> </subscriptionRecoveryPolicy>
>> </policyEntry>
>>
>> </policyEntries></policyMap>
>> </destinationPolicy>
>>
>>
>> <transportConnectors>
>>
>> <transportConnector uri="tcp://localhost:61618"
>> discoveryUri="multicast://default"/>
>> </transportConnectors>
>>
>> <networkConnectors>
>> <networkConnector uri="static://(tcp://localhost:61616)"
>> networkTTL="99"/>
>> </networkConnectors>
>>
>> </broker>
>>
>> Unfortunately, if i try to start to start active-mq via:
>>
>> ./activemq
>>
>> i get the following output:
>>
>> ACTIVEMQ_HOME: /opt/apache-activemq-4.1.1
>> ACTIVEMQ_BASE: /opt/apache-activemq-4.1.1
>> Loading message broker from: xbean:activemq.xml
>> INFO BrokerService - ActiveMQ 4.1.1 JMS Message Broker
>> (broker_A) is starting
>> INFO BrokerService - For help or more information
>> please see: http://incubator.apache.org/activemq/
>> INFO ManagementContext - JMX consoles can connect to
>> service:jmx:rmi:///jndi/rmi://localhost:4444/jmxrmi
>> INFO JDBCPersistenceAdapter - Database driver recognized:
>> [apache_derby_embedded_jdbc_driver]
>> INFO DefaultDatabaseLocker - Attempting to acquire the
>> exclusive lock to become the Master broker
>> INFO DefaultDatabaseLocker - Becoming the master on dataSource:
>> org.apache.derby.jdbc.EmbeddedDataSource@1e55794
>> INFO JournalPersistenceAdapter - Journal Recovery Started from:
>> Active Journal: using 5 x 20.0 Megs at:
>> /opt/apache-activemq-4.1.1/activemq-data/broker_A/journal
>> INFO JournalPersistenceAdapter - Journal Recovered: 0 message(s) in
>> transactions recovered.
>> INFO TransportServerThreadSupport - Listening for connections at:
>> tcp://debln099:61617
>> INFO TransportConnector - Connector tcp://localhost:61617
>> Started
>> INFO NetworkConnector - Establishing network connection
>> between from vm:?network=true to tcp://localhost:61616
>> INFO BrokerService - ActiveMQ 4.1.1 JMS Message Broker
>> (null) is starting
>> INFO BrokerService - For help or more information
>> please see: http://incubator.apache.org/activemq/
>> INFO JDBCPersistenceAdapter - Database driver recognized:
>> [apache_derby_embedded_jdbc_driver]
>> INFO ManagementContext - JMX consoles can connect to
>> service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
>> INFO DefaultDatabaseLocker - Attempting to acquire the
>> exclusive lock to become the Master broker
>> INFO DefaultDatabaseLocker - Becoming the master on dataSource:
>> org.apache.derby.jdbc.EmbeddedDataSource@158291
>> INFO JournalPersistenceAdapter - Journal Recovery Started from:
>> Active Journal: using 2 x 20.0 Megs at:
>> /opt/apache-activemq-4.1.1/bin/activemq-data/null/journal
>> INFO JournalPersistenceAdapter - Journal Recovered: 0 message(s) in
>> transactions recovered.
>> INFO BrokerService - ActiveMQ JMS Message Broker (null,
>> ID:debln099-46244-1185883671408-1:1) started
>> INFO TransportConnector - Connector vm://null Started
>> WARN NetworkConnector - Could not start network bridge
>> between: vm:?network=true and: tcp://localhost:61616 due to:
>> java.net.ConnectException: Connection refused
>> INFO NetworkConnector - Network Connector bridge Started
>> INFO BrokerService - ActiveMQ JMS Message Broker
>> (broker_A, ID:debln099-46244-1185883671408-1:0) started
>> INFO NetworkConnector - Establishing network connection
>> between from vm:?network=true to tcp://localhost:61616
>> INFO TransportConnector - Connector vm://null Stopped
>> INFO BrokerService - ActiveMQ 4.1.1 JMS Message Broker
>> (null) is starting
>> INFO BrokerService - For help or more information
>> please see: http://incubator.apache.org/activemq/
>> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
>> seconds for the journal to be unlocked.
>> WARN ManagementContext - Failed to start jmx connector:
>> Cannot bind to URL [rmi://localhost:1099/jmxrmi]:
>> javax.naming.NameAlreadyBoundException: jmxrmi [Root exception is
>> java.rmi.AlreadyBoundException: jmxrmi]
>> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
>> seconds for the journal to be unlocked.
>> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
>> seconds for the journal to be unlocked.
>> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
>> seconds for the journal to be unlocked.
>> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
>> seconds for the journal to be unlocked.
>> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
>> seconds for the journal to be unlocked.
>> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
>> seconds for the journal to be unlocked.
>> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
>> seconds for the journal to be unlocked.
>> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
>> seconds for the journal to be unlocked.
>>
>>
>> As you can see, only broker_A is starting.
>>
>> Furthermore, every broker has a separate journal directory which is empty
>> before starting AMQ:
>>
>>
>> <persistenceAdapter>
>> <journaledJDBC journalLogFiles="5"
>> dataDirectory="${activemq.base}/activemq-data/broker_C/"/>
>> </persistenceAdapter>
>>
>> What the hack is wrong? To me the configuration seems to be right, can
>> somebody release me from my misery?
>> Why do the journal lock error?
>>
>> Thx in advance.....
>>
>
>
--
View this message in context: http://www.nabble.com/Simple-network-of-brokers-%2B-faultPersistenceAdapterFactory---Journal-is-locked-tf4192402s2354.html#a11925818
Sent from the ActiveMQ - User mailing list archive at Nabble.com.
Re: Simple network of brokers + faultPersistenceAdapterFactory -
Journal is locked
Posted by ttmdev <jo...@ttmsolutions.com>.
I ran across a similar set of problems when setting up a 3-broker NoB on my
Windows XP machine and addressed it by simply assigning each broker it's own
separate ${activemq.base}. If you don't do that, you end up with a shared
file system Master/Slave configuration. Here's my configuration:
<broker brokerName="localhost" useJmx="true"
xmlns="http://activemq.org/config/1.0">
<!-- Use the following to configure how ActiveMQ is exposed in JMX -->
<managementContext>
<managementContext connectorPort="1099"
jmxDomainName="org.apache.activemq"/>
</managementContext>
<!-- In ActiveMQ 4, you can setup destination policies -->
<destinationPolicy>
<policyMap><policyEntries>
<policyEntry topic="FOO.>">
<dispatchPolicy>
<strictOrderDispatchPolicy />
</dispatchPolicy>
<subscriptionRecoveryPolicy>
<lastImageSubscriptionRecoveryPolicy />
</subscriptionRecoveryPolicy>
</policyEntry>
</policyEntries></policyMap>
</destinationPolicy>
<persistenceAdapter>
<journaledJDBC journalLogFiles="5"
dataDirectory="${activemq.base}/activemq-data"/>
</persistenceAdapter>
<transportConnectors>
<transportConnector name="openwire" uri="tcp://localhost:61616"
discoveryUri="multicast://default"/>
<transportConnector name="ssl" uri="ssl://localhost:61617"/>
<transportConnector name="stomp" uri="stomp://localhost:61613"/>
</transportConnectors>
<networkConnectors>
<!-- This broker is going to just listen for other brokers -->
<!--
<networkConnector name="default-nc" uri="multicast://default"/>
-->
</networkConnectors>
<plugins>
<!-- use JAAS to authenticate using the login.config file on the
classpath to configure JAAS -->
<!-- <jaasAuthenticationPlugin configuration="activemq-domain" /> -->
</plugins>
</broker>
<broker brokerName="localhost2" useJmx="true"
xmlns="http://activemq.org/config/1.0">
<!-- Use the following to configure how ActiveMQ is exposed in JMX -->
<managementContext>
<managementContext connectorPort="1098"
jmxDomainName="org.apache.activemq"/>
</managementContext>
<!-- In ActiveMQ 4, you can setup destination policies -->
<destinationPolicy>
<policyMap><policyEntries>
<policyEntry topic="FOO.>">
<dispatchPolicy>
<strictOrderDispatchPolicy />
</dispatchPolicy>
<subscriptionRecoveryPolicy>
<lastImageSubscriptionRecoveryPolicy />
</subscriptionRecoveryPolicy>
</policyEntry>
</policyEntries></policyMap>
</destinationPolicy>
<persistenceAdapter>
<journaledJDBC journalLogFiles="5"
dataDirectory="/tmp/amq-base2/activemq-data"/>
</persistenceAdapter>
<transportConnectors>
<transportConnector name="openwire2" uri="tcp://localhost:61618"
discoveryUri="multicast://default"/>
</transportConnectors>
<networkConnectors>
<networkConnector name="localhost2"
uri="static://(tcp://localhost:61616)" />
</networkConnectors>
<plugins>
<!-- use JAAS to authenticate using the login.config file on the
classpath to configure JAAS -->
<!-- <jaasAuthenticationPlugin configuration="activemq-domain" /> -->
</plugins>
</broker>
<broker brokerName="localhost3" useJmx="true"
xmlns="http://activemq.org/config/1.0">
<!-- In ActiveMQ 4, you can setup destination policies -->
<destinationPolicy>
<policyMap><policyEntries>
<policyEntry topic="FOO.>">
<dispatchPolicy>
<strictOrderDispatchPolicy />
</dispatchPolicy>
<subscriptionRecoveryPolicy>
<lastImageSubscriptionRecoveryPolicy />
</subscriptionRecoveryPolicy>
</policyEntry>
</policyEntries></policyMap>
</destinationPolicy>
<!-- Use the following to configure how ActiveMQ is exposed in JMX -->
<managementContext>
<managementContext connectorPort="1097"
jmxDomainName="org.apache.activemq"/>
</managementContext>
<persistenceAdapter>
<journaledJDBC journalLogFiles="5"
dataDirectory="/tmp/amq-base3/activemq-data"/>
</persistenceAdapter>
<transportConnectors>
<transportConnector name="openwire3" uri="tcp://localhost:61619"
discoveryUri="multicast://default"/>
</transportConnectors>
<networkConnectors>
<networkConnector name="localhost3"
uri="static://(tcp://localhost:61616)" />
</networkConnectors>
<plugins>
<!-- use JAAS to authenticate using the login.config file on the
classpath to configure JAAS -->
<!-- <jaasAuthenticationPlugin configuration="activemq-domain" /> -->
</plugins>
</broker>
Hope this helps,
Joe
j0llyr0g3r wrote:
>
> Hey folks,
>
> i am really getting desperate with the configuration of a simple network
> of brokers...
>
> What i wanted to do was:
>
> - One instance of activeMQ
> - 3 brokers running within that instance
> - 1 Producer and 2 Consumers
>
> In Ascii:
>
> Consumer Consumer
> | |
> broker_A broker_C
> \ /
> \ /
> \/
> broker_B
> ^
> |
> Producer
>
> So i thought the following broker-config.xml would do the trick:
>
> Broker_B listens on Port 61616 and knows the brokers "A" and "C" which
> should be listening on 61617 and 61618:
>
> Broker_B:
>
> <broker brokerName="broker_B" useJmx="true"
> xmlns="http://activemq.org/config/1.0">
>
> <!-- Use the following to configure how ActiveMQ is exposed in JMX -->
> <managementContext>
> <managementContext connectorPort="5555"
> jmxDomainName="org.apache.activemq"/>
> </managementContext>
>
> <persistenceAdapter>
> <journaledJDBC journalLogFiles="5"
> dataDirectory="${activemq.base}/activemq-data/broker_B/"/>
> </persistenceAdapter>
>
> <destinationPolicy>
> <policyMap><policyEntries>
>
> <policyEntry topic="FOO">
> <dispatchPolicy>
> <strictOrderDispatchPolicy />
> </dispatchPolicy>
> <subscriptionRecoveryPolicy>
> <lastImageSubscriptionRecoveryPolicy />
> </subscriptionRecoveryPolicy>
> </policyEntry>
>
> </policyEntries></policyMap>
> </destinationPolicy>
>
>
> <transportConnectors>
> <transportConnector uri="tcp://localhost:61616"
> discoveryUri="multicast://default"/>
> </transportConnectors>
>
> <networkConnectors>
> <networkConnector
> uri="static://(tcp://localhost:61617,tcp://localhost:61618)"
> networkTTL="99" />
> </networkConnectors>
>
> </broker>
>
>
> Broker_A:
>
> <broker brokerName="broker_A" useJmx="true"
> xmlns="http://activemq.org/config/1.0">
>
> <!-- Use the following to configure how ActiveMQ is exposed in JMX -->
> <managementContext>
> <managementContext connectorPort="4444"
> jmxDomainName="org.apache.activemq"/>
> </managementContext>
>
> <persistenceAdapter>
> <journaledJDBC journalLogFiles="5"
> dataDirectory="${activemq.base}/activemq-data/broker_A/"/>
> </persistenceAdapter>
>
> <!-- In ActiveMQ 4, you can setup destination policies -->
> <destinationPolicy>
> <policyMap><policyEntries>
> <policyEntry topic="FOO">
> <dispatchPolicy>
> <strictOrderDispatchPolicy />
> </dispatchPolicy>
> <subscriptionRecoveryPolicy>
> <lastImageSubscriptionRecoveryPolicy />
> </subscriptionRecoveryPolicy>
> </policyEntry>
> </policyEntries></policyMap>
> </destinationPolicy>
>
> <transportConnectors>
> <transportConnector uri="tcp://localhost:61617"
> discoveryUri="multicast://default"/>
> </transportConnectors>
>
> <networkConnectors>
> <networkConnector uri="static://(tcp://localhost:61616)"
> networkTTL="99"/>
> </networkConnectors>
>
> </broker>
>
>
> Broker_C:
>
> <broker brokerName="broker_C" useJmx="true"
> xmlns="http://activemq.org/config/1.0">
>
> <!-- Use the following to configure how ActiveMQ is exposed in JMX -->
> <managementContext>
> <managementContext connectorPort="6666"
> jmxDomainName="org.apache.activemq"/>
> </managementContext>
>
> <persistenceAdapter>
> <journaledJDBC journalLogFiles="5"
> dataDirectory="${activemq.base}/activemq-data/broker_C/"/>
> </persistenceAdapter>
>
> <!-- In ActiveMQ 4, you can setup destination policies -->
> <destinationPolicy>
> <policyMap><policyEntries>
>
> <policyEntry topic="FOO">
> <dispatchPolicy>
> <strictOrderDispatchPolicy />
> </dispatchPolicy>
> <subscriptionRecoveryPolicy>
> <lastImageSubscriptionRecoveryPolicy />
> </subscriptionRecoveryPolicy>
> </policyEntry>
>
> </policyEntries></policyMap>
> </destinationPolicy>
>
>
> <transportConnectors>
>
> <transportConnector uri="tcp://localhost:61618"
> discoveryUri="multicast://default"/>
> </transportConnectors>
>
> <networkConnectors>
> <networkConnector uri="static://(tcp://localhost:61616)"
> networkTTL="99"/>
> </networkConnectors>
>
> </broker>
>
> Unfortunately, if i try to start to start active-mq via:
>
> ./activemq
>
> i get the following output:
>
> ACTIVEMQ_HOME: /opt/apache-activemq-4.1.1
> ACTIVEMQ_BASE: /opt/apache-activemq-4.1.1
> Loading message broker from: xbean:activemq.xml
> INFO BrokerService - ActiveMQ 4.1.1 JMS Message Broker
> (broker_A) is starting
> INFO BrokerService - For help or more information please
> see: http://incubator.apache.org/activemq/
> INFO ManagementContext - JMX consoles can connect to
> service:jmx:rmi:///jndi/rmi://localhost:4444/jmxrmi
> INFO JDBCPersistenceAdapter - Database driver recognized:
> [apache_derby_embedded_jdbc_driver]
> INFO DefaultDatabaseLocker - Attempting to acquire the exclusive
> lock to become the Master broker
> INFO DefaultDatabaseLocker - Becoming the master on dataSource:
> org.apache.derby.jdbc.EmbeddedDataSource@1e55794
> INFO JournalPersistenceAdapter - Journal Recovery Started from:
> Active Journal: using 5 x 20.0 Megs at:
> /opt/apache-activemq-4.1.1/activemq-data/broker_A/journal
> INFO JournalPersistenceAdapter - Journal Recovered: 0 message(s) in
> transactions recovered.
> INFO TransportServerThreadSupport - Listening for connections at:
> tcp://debln099:61617
> INFO TransportConnector - Connector tcp://localhost:61617
> Started
> INFO NetworkConnector - Establishing network connection
> between from vm:?network=true to tcp://localhost:61616
> INFO BrokerService - ActiveMQ 4.1.1 JMS Message Broker
> (null) is starting
> INFO BrokerService - For help or more information please
> see: http://incubator.apache.org/activemq/
> INFO JDBCPersistenceAdapter - Database driver recognized:
> [apache_derby_embedded_jdbc_driver]
> INFO ManagementContext - JMX consoles can connect to
> service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
> INFO DefaultDatabaseLocker - Attempting to acquire the exclusive
> lock to become the Master broker
> INFO DefaultDatabaseLocker - Becoming the master on dataSource:
> org.apache.derby.jdbc.EmbeddedDataSource@158291
> INFO JournalPersistenceAdapter - Journal Recovery Started from:
> Active Journal: using 2 x 20.0 Megs at:
> /opt/apache-activemq-4.1.1/bin/activemq-data/null/journal
> INFO JournalPersistenceAdapter - Journal Recovered: 0 message(s) in
> transactions recovered.
> INFO BrokerService - ActiveMQ JMS Message Broker (null,
> ID:debln099-46244-1185883671408-1:1) started
> INFO TransportConnector - Connector vm://null Started
> WARN NetworkConnector - Could not start network bridge
> between: vm:?network=true and: tcp://localhost:61616 due to:
> java.net.ConnectException: Connection refused
> INFO NetworkConnector - Network Connector bridge Started
> INFO BrokerService - ActiveMQ JMS Message Broker
> (broker_A, ID:debln099-46244-1185883671408-1:0) started
> INFO NetworkConnector - Establishing network connection
> between from vm:?network=true to tcp://localhost:61616
> INFO TransportConnector - Connector vm://null Stopped
> INFO BrokerService - ActiveMQ 4.1.1 JMS Message Broker
> (null) is starting
> INFO BrokerService - For help or more information please
> see: http://incubator.apache.org/activemq/
> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
> seconds for the journal to be unlocked.
> WARN ManagementContext - Failed to start jmx connector:
> Cannot bind to URL [rmi://localhost:1099/jmxrmi]:
> javax.naming.NameAlreadyBoundException: jmxrmi [Root exception is
> java.rmi.AlreadyBoundException: jmxrmi]
> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
> seconds for the journal to be unlocked.
> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
> seconds for the journal to be unlocked.
> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
> seconds for the journal to be unlocked.
> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
> seconds for the journal to be unlocked.
> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
> seconds for the journal to be unlocked.
> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
> seconds for the journal to be unlocked.
> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
> seconds for the journal to be unlocked.
> INFO faultPersistenceAdapterFactory - Journal is locked... waiting 10
> seconds for the journal to be unlocked.
>
>
> As you can see, only broker_A is starting.
>
> Furthermore, every broker has a separate journal directory which is empty
> before starting AMQ:
>
>
> <persistenceAdapter>
> <journaledJDBC journalLogFiles="5"
> dataDirectory="${activemq.base}/activemq-data/broker_C/"/>
> </persistenceAdapter>
>
> What the hack is wrong? To me the configuration seems to be right, can
> somebody release me from my misery?
> Why do the journal lock error?
>
> Thx in advance.....
>
--
View this message in context: http://www.nabble.com/Simple-network-of-brokers-%2B-faultPersistenceAdapterFactory---Journal-is-locked-tf4192402s2354.html#a11925222
Sent from the ActiveMQ - User mailing list archive at Nabble.com.