activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nusa <setianus...@yahoo.co.uk>
Subject Re: Problem with failover and consumer
Date Tue, 26 Sep 2006 12:30:57 GMT

OF COURSE .... oh dear oh dear oh dear ... thanks James. Just put  commit(),
and that's it. Done.

One last thing.
I define in my activemq.xml the queue destination as follows :
        <!-- In ActiveMQ 4, you can setup destination policies -->  
        <destinationPolicy>
            <policyMap>
                 <policyEntries>        
                    <policyEntry queue="MYQUEUE.QUEUE">
                        <dispatchPolicy>
                            <strictOrderDispatchPolicy />
                        </dispatchPolicy>
                    </policyEntry>
                </policyEntries>
            </policyMap>
        </destinationPolicy>

And it also defined in within applicationContext.xml :

    <bean id="destination" class="org.apache.activemq.command.ActiveMQQueue"
autowire="constructor">
        <constructor-arg>
            <value>org.apache.activemq.spring.Test.spring.queue</value>
        </constructor-arg>
    </bean>
  
    <!-- a sample POJO consumer -->
    <bean id="consumer" class="ae.marcurafze.scanning.jms.ConsumerBean"
init-method="start" >
        <property name="template">
            <ref local="myJmsTemplate"/>
        </property>
        <property name="destination">
            <ref local="destination"/>
        </property>
    </bean>    

Looking at the log, it's only org.apache.activemq.spring.Test.spring.queue
that is being used :
...
16:09:52,359 DEBUG [broker.region.AbstractRegion] Adding destination:
topic://ActiveMQ.Advisory.Connection
16:09:52,375 DEBUG [broker.region.AbstractRegion] Adding destination:
topic://ActiveMQ.Advisory.Topic
16:09:52,530 DEBUG [broker.region.AbstractRegion] Adding destination:
topic://ActiveMQ.Advisory.Consumer.Queue.org.apache.activemq.spring.Test.spring.queue
16:09:52,645 DEBUG [factory.support.DefaultListableBeanFactory] Invoking
BeanPostProcessors after initialization of bean 'consumer'
...

What's the purpose of defining queue within  <destinationPolicy> ?
Should the  <policyEntry queue="MYQUEUE.QUEUE"> points to
org.apache.activemq.spring.Test.spring.queue, i.e :
<policyEntry queue="org.apache.activemq.spring.Test.spring.queue"> ?

Thanks James.


James.Strachan wrote:
> 
> You are creating a transactional consumer but never commit()ing the
> transaction - so all messages will be redelivered on startup.
> 
> On 9/26/06, nusa <setianusa07@yahoo.co.uk> wrote:
>>
>> The consumer java code :
>>
>> public class ConsumerBean implements MessageListener {
>>
>>         private Logger log = Logger.getLogger(getClass());
>>
>>     private JmsTemplate                 template;
>>     private Destination                 destination;
>>
>>     private Connection                  connection;
>>     private Session                     session;
>>     private MessageConsumer     consumer;
>>
>>     private String                              myId = "ABC";
>>
>>     public void start() throws JMSException {
>>         String selector = "next = '" + myId + "'";
>>
>>         try {
>>             ConnectionFactory factory = template.getConnectionFactory();
>>             connection = factory.createConnection();
>>
>>             // we might be a reusable connection in spring
>>             // so lets only set the client ID once if its not set
>>             synchronized (connection) {
>>                 if (connection.getClientID() == null) {
>>                     connection.setClientID(myId);
>>                 }
>>             }
>>
>>             connection.start();
>>
>>             session = connection.createSession(true,
>> Session.AUTO_ACKNOWLEDGE);
>>             consumer = session.createConsumer(destination, selector,
>> false);
>>             consumer.setMessageListener(this);
>>         }
>>         catch (JMSException ex) {
>>             log.error("*** Error Starting Consumer !!!", ex);
>>             throw ex;
>>         }
>>     }
>>
>>         /* (non-Javadoc)
>>          * @see javax.jms.MessageListener#onMessage(javax.jms.Message)
>>          */
>>         public void onMessage(Message msg) {
>>         log.info("==> Receiving a msg to generate PDF ...");
>>         ...
>>         }
>>
>>         /**
>>          * @return the template
>>          */
>>         public JmsTemplate getTemplate() {
>>                 return template;
>>         }
>>
>>         /**
>>          * @param template the template to set
>>          */
>>         public void setTemplate(JmsTemplate template) {
>>                 this.template = template;
>>         }
>>
>>         /**
>>          * @return the destination
>>          */
>>         public Destination getDestination() {
>>                 return destination;
>>         }
>>
>>         /**
>>          * @param destination the destination to set
>>          */
>>         public void setDestination(Destination destination) {
>>                 this.destination = destination;
>>         }
>>
>> }
>>
>> I think the message is consumed because the onMessage method is invoked.
>>
>>
>> James.Strachan wrote:
>> >
>> > Could you post your consumer java code?
>> >
>> > If you browse the queues, do you see messages being consumed?
>> > http://incubator.apache.org/activemq/jmx.html
>> >
>> >
>> > On 9/26/06, nusa <setianusa07@yahoo.co.uk> wrote:
>> >>
>> >> James,
>> >>
>> >> OK, I'm going to ignore this failover.
>> >>
>> >> Back to my consumer,  I'm using a queue ( I mean that what I expected
>> ).
>> >> I modified my activemq.xml into :
>> >> ...
>> >>         <destinationPolicy>
>> >>             <policyMap>
>> >>                  <policyEntries>
>> >>                     <policyEntry queue="SCANNINGDA.QUEUE>">
>> >>                         <dispatchPolicy>
>> >>                             <strictOrderDispatchPolicy />
>> >>                         </dispatchPolicy>
>> >>                     </policyEntry>
>> >>                 </policyEntries>
>> >>             </policyMap>
>> >>         </destinationPolicy>
>> >> ...
>> >>
>> >> undeploy, then deploy the war file.
>> >> Yet the onMessage got invoke again WITHOUT any message sent by the
>> >> producer.
>> >> Any idea James ?
>> >>
>> >> Thanks.
>> >>
>> >>
>> >>
>> >> James.Strachan wrote:
>> >> >
>> >> > On 9/26/06, nusa <setianusa07@yahoo.co.uk> wrote:
>> >> >> Thanks James for a quick reply.
>> >> >>
>> >> >> failover: is  only used on the client side. How and where to define
>> it
>> >> ?
>> >> >
>> >> > You only use it when configuring your JMS client - ignore it for
>> using
>> >> > networkConnectors (i.e. connecting brokers to each other) as they
>> use
>> >> > a failover mechanism by default
>> >> >
>> >> >
>> >>
>> http://incubator.apache.org/activemq/how-can-i-support-auto-reconnection.html
>> >> >
>> >> >
>> >> >> OK, sorry for incomplete info.
>> >> >> Everytime I startup my Tomcat, my consumer receveive a message,
to
>> be
>> >> >> precised
>> >> >> the onMessage method is invoked, WITHOUT the producer send any
>> >> message.
>> >> >> Would that help ?
>> >> >
>> >> > I can't explain it I'm afraid. Are you using topics or queues? From
>> >> > your configuraiton you seem to be using queues with
>> >> > lastImageRecoveryPolicy (which is only intended for topics). If you
>> >> > are using last image recovery, then getting a message on startup is
>> >> > the desired behaviour :)
>> >> >
>> >> > --
>> >> >
>> >> > James
>> >> > -------
>> >> > http://radio.weblogs.com/0112098/
>> >> >
>> >> >
>> >>
>> >> --
>> >> View this message in context:
>> >>
>> http://www.nabble.com/Problem-with-failover-and-consumer-tf2337476.html#a6504817
>> >> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>> >>
>> >>
>> >
>> >
>> > --
>> >
>> > James
>> > -------
>> > http://radio.weblogs.com/0112098/
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Problem-with-failover-and-consumer-tf2337476.html#a6504962
>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>
>>
> 
> 
> -- 
> 
> James
> -------
> http://radio.weblogs.com/0112098/
> 
> 

-- 
View this message in context: http://www.nabble.com/Problem-with-failover-and-consumer-tf2337476.html#a6505811
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message