activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Tully <gary.tu...@gmail.com>
Subject Re: Pure mater/slave is not working in 5.2.0
Date Thu, 19 Feb 2009 13:00:40 GMT
thanks for the verification. I think the analysis in AMQ-2102 is spot
on, for a slave, the ack validation logic needs to be able to cope
with an ack for a different consumer as the actual dispatch logic is
not in sync between the master and the slave. In essence, to accept
the ack, the slave will need to look for the matching subscription and
deliver the ack to it.

2009/2/19 aklochkov <aklochkov@griddynamics.com>:
>
> I tried 5.3-SNAPSHOT and got exactly the same problems.
>
>
> Gary Tully wrote:
>>
>> could you try your scenario against a 5.3-SNAPSHOT[1], there is a
>> known issue but it occurs with multiple consumers only. see:
>> https://issues.apache.org/activemq/browse/AMQ-2102
>>
>> [1]
>> http://people.apache.org/repo/m2-snapshot-repository/org/apache/activemq/apache-activemq/5.3-SNAPSHOT/
>>
>>
>> 2009/2/18 aklochkov <aklochkov@griddynamics.com>:
>>>
>>> I got master/slave configs from the svn:
>>>
>>> svn co
>>> http://svn.apache.org/repos/asf/activemq/trunk/activemq-core/src/test/resources/org/apache/activemq/broker/ft/
>>>
>>> Then started master and slave with the following commands:
>>>
>>> activemq.bat xbean:file:master.xml
>>> activemq.bat xbean:file:slave.xml
>>>
>>> Then I produced messages with the producer from the examples:
>>>
>>> ant producer
>>> -Durl="failover://(tcp://localhost:62001,tcp://localhost:62002)?randomize=false"
>>>
>>> And then I tried to consume them:
>>>
>>> ant consumer
>>> -Durl="failover://(tcp://localhost:62001,tcp://localhost:62002)?randomize=false"
>>>
>>> I got a lot of messages like this one  both in logs of master and slave:
>>>
>>> javax.jms.JMSException: Unmatched acknowledege: MessageAck {commandId =
>>> 3417, responseRequired = true, ackType = 2, consumerId =
>>> ID:DIGNOTE-3459-1234955291656-0:0:1:1, firstMessageId =
>>> ID:DIGNOTE-3451-1234955280437-0:0:1:1:201, lastMessageId =
>>> ID:DIGNOTE-3451-1234955280437-0:0:1:1:201, destination =
>>> queue://TEST.FOO,
>>> transactionId = null, messageCount = 1}; Could not find Message-ID
>>> ID:DIGNOTE-3451-1234955280437-0:0:1:1:201 in dispatched-list (start of
>>> ack)
>>>        at
>>> org.apache.activemq.broker.region.PrefetchSubscription.assertAckMatchesDispatched(PrefetchSubscription.java:438)
>>>        at
>>> org.apache.activemq.broker.region.PrefetchSubscription.acknowledge(PrefetchSubscription.java:188)
>>>        at
>>> org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:373)
>>>        at
>>> org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:462)
>>>        at
>>> org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:194)
>>>        at
>>> org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)
>>>        at
>>> org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)
>>>        at
>>> org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:85)
>>>        at
>>> org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:456)
>>>        at
>>> org.apache.activemq.command.MessageAck.visit(MessageAck.java:205)
>>>
>>> This is a master config:
>>>
>>>  <broker brokerName="master" persistent="false" useJmx="true"
>>> deleteAllMessagesOnStartup="true"
>>> xmlns="http://activemq.apache.org/schema/core">
>>>    <transportConnectors>
>>>      <transportConnector uri="tcp://localhost:62001"/>
>>>    </transportConnectors>
>>>    <managementContext>
>>>      <managementContext connectorPort="2011"
>>> jmxDomainName="test.domain"/>
>>>    </managementContext>
>>>  </broker>
>>>
>>> And it's a slave config:
>>>
>>>  <broker brokerName="slave" useJmx="true"
>>> masterConnectorURI="tcp://localhost:62001"
>>> xmlns="http://activemq.apache.org/schema/core">
>>>    <transportConnectors>
>>>      <transportConnector uri="tcp://localhost:62002"/>
>>>    </transportConnectors>
>>>    <managementContext>
>>>      <managementContext connectorPort="2012"
>>> jmxDomainName="test.domain"/>
>>>    </managementContext>
>>>  </broker>
>>>
>>>
>>> I've heard that current activemq is suitable for the simplest tasks only
>>> and
>>> the first thing I tried just doesn't work out of the box. Am I missing
>>> something? Please help to clear this 'cause we don't want to mess with a
>>> big
>>> heavy-weight commercial provider.
>>> --
>>> View this message in context:
>>> http://www.nabble.com/Pure-mater-slave-is-not-working-in-5.2.0-tp22076698p22076698.html
>>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>>
>>>
>>
>>
>>
>> --
>> http://blog.garytully.com
>>
>> Open Source SOA
>> http://FUSESource.com
>>
>>
>
> --
> View this message in context: http://www.nabble.com/Pure-mater-slave-is-not-working-in-5.2.0-tp22076698p22099571.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
>



-- 
http://blog.garytully.com

Open Source SOA
http://FUSESource.com

Mime
View raw message