Hello Krystian! I believe you face this problem because delayer in Camel is implemented simply with Thread.sleep() method, so the solution for you would be to use <from uri="activemq:queue:Input?concurrentConsumers=10" />. You can also configure this parameter on component level. This way you can handle 10 concurrent messages at a time. Of course this solution is not very good if you have to wait longer and have higher rate of messages, but should be OK in common situations.
Roman 2008/5/30 Krystian Szczesny <[EMAIL PROTECTED]>: > > Hi again, > > I've encountered another problem with camel delayer. > Well before it was a feature for me, but it became a problem ;] > > When using the delayer with methodCall it seems like there is only one > process handling the route [I don't know how to put it in right words]. > When I will send 10 messages it seems that each of them is handled > separately. > 10 messages are put into queue > message 1 is taken, it is delayed, it is sent > message 2 is taken, it is delayed, it is sent > > I would like to see something like this: > message 1 is taken, it is delayed, > message 2 is taken, it is delayed, > message 3 is taken, it is delayed > let's say that message 1 delay has come to an end so it is sent > message 4 is take, it is delayed, > mesage 2 delay has come to an end so it it sent > and so on > > I need it to work asynchronously, is there a way to do that? > > When I use this settings: > <camelContext id="camel" > xmlns="http://activemq.apache.org/camel/schema/spring"> > <route> > <from uri="activemq:queue:Input" /> > <delayer> > <simple>header.JMSTimestamp</simple> > <to uri="activemq:queue:Output" /> > <delay>3000</delay> > </delayer> > </route> > </camelContext> > > It seems to work this way, but I need to have more control over what is > going on, so I really need that method call. > > When adding it: > <camelContext id="camel" > xmlns="http://activemq.apache.org/camel/schema/spring"> > <route> > <from uri="activemq:queue:Input" /> > <delayer> > <simple>header.JMSTimestamp</simple> > <to uri="activemq:queue:Output" /> > <methodCall bean="delayerBean" > method="delay"/> > <!-- <delay>3000</delay> --> > </delayer> > </route> > </camelContext> > > It suddenly starts to work synchronously. > > I've tried nesting methodCall in <delay> but that didn't work either ;) > > I would appreciate some help in this matter. > -- > View this message in context: > http://www.nabble.com/Delay-messages-with-camel-sequentially-tp17144701s22882p17555926.html > Sent from the Camel - Users mailing list archive at Nabble.com. > >
