<destinationPolicy> is for associating per-destination policies with
destinations.
These pages should give you some background
http://incubator.apache.org/activemq/how-do-i-create-new-destinations.html
http://incubator.apache.org/activemq/per-destination-policies.html
On 9/26/06, nusa <[EMAIL PROTECTED]> wrote:
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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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.
--
James
-------
http://radio.weblogs.com/0112098/