Hello, 

Below you will find a simplified example, of what my router is doing,
basically recieving on one queue and then resending on another in this
example, now to get the test working properly, have a producer send messages
to the recieving queue and no one listening to the destination queue
eventually the router will hang.

My producers are connecting with the following, settings to the broker;
Delivery Mode = persistent, Message TTL = 0 (Essentially infinite),
transacted = false, session = auto acknowledge.

To see the problem faster you can set the memory in the policy entry for you
queue to lower, I suggest really low so that the problem appears really fast
and you don't have to wait to see it appear.

public class TestCamelRouter extends RouteBuilder
{
        final static String BEAN_NAME = "TestCamelRouter";
        final static String BEAN_METHOD = "route";

        @RecipientList
        public List<String> route(Exchange exchange)
        {
                ArrayList<String> returnSet = new ArrayList<String>();
                returnSet.add("JMS-BROKER" + ":queue:" + "TestDeliveryQueue");
                return returnSet;
        }

        @Override
        public void configure() throws Exception
        {
                from("JMS-BROKER" + ":queue:" +
"RecievingQueue").beanRef(TestCamelRouter.BEAN_NAME,
TestCamelRouter.BEAN_METHOD);
        }

        public static void main(String[] args)
        {
                JndiContext jndiContext = null;
                try
                {
                        jndiContext = new JndiContext();
                        jndiContext.bind(TestCamelRouter.BEAN_NAME, new 
TestCamelRouter());
                }
                catch (Exception e)
                {
                        e.printStackTrace();
                        return;
                }
                CamelContext context = new DefaultCamelContext(jndiContext);
                ActiveMQConnectionFactory factory = new
ActiveMQConnectionFactory("tcp://localhost:61616");
                factory.setDispatchAsync(true);
                context.addComponent("JMS-BROKER",
JmsComponent.jmsComponentAutoAcknowledge(factory));
                try
                {
                        context.addRoutes(new TestCamelRouter());
                        context.start();
                        while (true)
                                Thread.sleep(60000);
                }
                catch (Exception e)
                {
                        e.printStackTrace();
                        return;
                }
        }

}


 




huntc wrote:
> 
> Can you please provide the route's specification in code or XML. This will
> give us a better chance of answering your question.
> 
> Having said that, sounds like you've got an internal seda queue... I would
> have thought that an exception would be thrown once the queue becomes
> full. By default a seda queue can only hold 1000 items.
> 
> If it is a JMS queue, then would setting the time to live option be useful
> to you?
> 

-- 
View this message in context: 
http://www.nabble.com/Router-Blocked-by-full-Destination-Route-Queue-tp22981898p23012582.html
Sent from the Camel - Users (activemq) mailing list archive at Nabble.com.

Reply via email to