[ https://issues.apache.org/jira/browse/AMQ-4316?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Timothy Bish closed AMQ-4316. ----------------------------- Resolution: Incomplete No test case or supporting information supplied. > Problem with duplicate message detection using ObjectMessage with equal object > ------------------------------------------------------------------------------ > > Key: AMQ-4316 > URL: https://issues.apache.org/jira/browse/AMQ-4316 > Project: ActiveMQ > Issue Type: Bug > Components: Broker, Message Store > Affects Versions: 5.8.0 > Environment: Activemq 5.8.0, Kahadb store. > Reporter: Pether Sörling > Fix For: AGING_TO_DIE > > > When sending any ObjectMessage that contain an equal object to was been sent > before I get from KahaDBStore : Duplicate message add attempt rejected. > So even if the messageId and commandId is different the message is still > detected as a duplicate and ignored. > A simple test would be to create two objectmessages with > "session.createObjectMessage("ANY OBJECT THAT is Equal")" and send to a > queue. > Our code worked with version 5.7.0 and tested amq-store as well as > KahaDbstore. > -- activemq config-- > <?xml version="1.0" encoding="UTF-8"?> > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:aop="http://www.springframework.org/schema/aop" > xmlns:context="http://www.springframework.org/schema/context" > xmlns:amq="http://activemq.apache.org/schema/core" > xmlns:jms="http://www.springframework.org/schema/jms" > xmlns:tx="http://www.springframework.org/schema/tx" > xsi:schemaLocation="http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-3.0.xsd > http://www.springframework.org/schema/tx > http://www.springframework.org/schema/tx/spring-tx-3.0.xsd > http://www.springframework.org/schema/context > http://www.springframework.org/schema/context/spring-context-3.0.xsd > http://www.springframework.org/schema/aop > http://www.springframework.org/schema/aop/spring-aop-3.0.xsd > http://activemq.apache.org/schema/core > http://activemq.apache.org/schema/core/activemq-core-5.4.1.xsd > http://www.springframework.org/schema/jms > http://www.springframework.org/schema/jms/spring-jms-3.0.xsd"> > <!-- lets create an embedded ActiveMQ Broker --> > <amq:broker brokerName="broker" id="broker" useJmx="true" > useShutdownHook="false" > persistent="true" enableStatistics="true"> > > <!-- add network > http://activemq.apache.org/networks-of-brokers.html --> > > <amq:persistenceAdapter> > <amq:kahaDB directory="activemq-data/broker/KahaDB" > journalMaxFileLength="32mb"/> > </amq:persistenceAdapter> > > <amq:networkConnectors> > <amq:networkConnector > uri="${server.activemq.networkconnectors.uri}" /> > </amq:networkConnectors> > > <amq:destinationPolicy> > <amq:policyMap> > <amq:policyEntries> > <amq:policyEntry queue=">" > optimizedDispatch="true" > lazyDispatch="false" > producerFlowControl="false" memoryLimit="128 mb" > strictOrderDispatch="true"> > <amq:dispatchPolicy> > > <amq:strictOrderDispatchPolicy /> > </amq:dispatchPolicy> > <amq:messageGroupMapFactory> > > <amq:simpleMessageGroupMapFactory /> > </amq:messageGroupMapFactory> > <amq:subscriptionRecoveryPolicy> > > <amq:timedSubscriptionRecoveryPolicy > > recoverDuration="360000" /> > > </amq:subscriptionRecoveryPolicy> > </amq:policyEntry> > </amq:policyEntries> > </amq:policyMap> > </amq:destinationPolicy> > <amq:systemUsage> > <amq:systemUsage sendFailIfNoSpace="true" > > <amq:memoryUsage> > <amq:memoryUsage limit="256mb" /> > </amq:memoryUsage> > <amq:storeUsage> > <amq:storeUsage limit="0" /> > </amq:storeUsage> > <amq:tempUsage> > <amq:tempUsage limit="4096mb" /> > </amq:tempUsage> > </amq:systemUsage> > </amq:systemUsage> > > <amq:transportConnectors> > <!--<amq:transportConnector > uri="tcp://localhost:0?jms.prefetchPolicy.all=50" > /> --> > <amq:transportConnector uri="vm://localhost:0" /> > <amq:transportConnector name="gwt-ajax" > uri="tcp://0.0.0.0:${jms.port}"/> > </amq:transportConnectors> > </amq:broker> > <amq:xaConnectionFactory id="jmsFactory" > brokerURL="${server.activemq.jmsfactory.brokerURL}" /> > <!-- <bean id="connectionFactory" > class="org.springframework.jms.connection.CachingConnectionFactory" > depends-on="broker"> <constructor-arg ref="jmsFactory" /> > <property name="sessionCacheSize" > value="100" /> </bean> --> > <bean id="connectionFactory" depends-on="broker" > class="com.atomikos.jms.AtomikosConnectionFactoryBean" > init-method="init" > destroy-method="close"> > <property name="uniqueResourceName" > value="borgenBackOfficeJmsConnectionFactory" /> > <property name="xaConnectionFactory" ref="jmsFactory" /> > <property name="maxPoolSize" value="96" /> > <property name="minPoolSize" value="4" /> > </bean> > <bean id="lifecycleProcessor" > > class="org.springframework.context.support.DefaultLifecycleProcessor"> > <!-- timeout value in milliseconds --> > <property name="timeoutPerShutdownPhase" value="1500" /> > </bean> > </beans> > -- -- 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