No, sorry no simple testcase and currently don't have the time to create one.
As I can the see from the 'Prefetch 0' in the web console, prefetchSize seems to get noticed from ActiveMQ. However, it doesn't seem to have any effect on the dispatched queue. I can only provide this code snippet currently on how I use the queue: private String getDestinationName(Pool pool) { return QUEUE_PREFIX + pool.getUniqueName() + "?consumer.prefetchSize=0"; } private List<Item> reserveItem(Pool pool, int number) throws ServiceException { List<Pool> reserved = Lists.newArrayListWithExpectedSize(number); this.JmsTemplate.setReceiveTimeout(2000); String queueName = getDestinationName(pool); for (int i = 0; i < number; i++) { TextMessage message = (TextMessage) this.jmsTemplate.receive(queueName); if (message == null) { throw ... <== that's what happens when no messages cannot be fetched anymore from queue } try { String idStr = message.getText(); long itemId = Long.parseLong(idStr); Item item = reserveItem(itemId); reserved.add(item); } catch (Exception e) { throw ... } } return reserved; } thanks Christoph Gary Tully wrote: > > prefetch==0 should be the answer here. Do you have a simple test case you > can share? > > 2010/1/19 Christoph Kutzinski <ku...@gmx.de> > >> Hi, >> >> let me first describe my use-case as it is probably a little bit >> different >> from the usual JMS use case: >> >> We have a single process which fills a JMS queue from a pool of available >> items (say we have 50 items total). >> The we have n consumers (lets say 2) which read the items from the queue >> in >> a synchronous way (i.e. Spring JmsTemplate#receive). >> This goes like so: >> - consumer A fetches 5 items >> - consumer B fetches 20 items >> - consumer A fetches 5 items >> and so on. >> >> The problem we have now is that we are not able to fetch all items from >> the >> queue - e.g. if there are still 10 items left in the queue and I want to >> get >> 10, I only get 5 or so. >> >> I've already found the prefetchSize configuration and set it to 0 (also >> tried 1), but still the same problem. >> The problem seems to be that each consumer has an internal 'dispatched >> queue' which already has some entries and consumer A has no possibility >> to >> access the dispatched queue of consumer B. >> >> For example the web console looks like this: >> Consumer A; Enqueues 10; Dequeues 5; Dispatched 10; Dispatched Queue 5; >> Prefetch 0; Max Pending 0 >> >> Consumer B; Enqueues 20; Dequeues 10; Dispatched 20; Dispatched Queue 10; >> Prefetch 0; Max Pending 0 >> >> In this case there would be e.g. still 15 items total in the queue, but >> with consumer A I would onyl be able to get 5 items and with consumer B >> only >> 10 items. >> >> I've tried various configuration options which I found in the ActiveMQ >> docu >> (dispatchAsync, alwaysSessionAsync, sendAsync, ...), but none seemed to >> help. >> >> Can anyone help? Does anyone know how to configure/disable this >> dispatched >> queue? >> >> >> thanks >> Christoph >> > > > > -- > http://blog.garytully.com > > Open Source Integration > http://fusesource.com > > -- View this message in context: http://old.nabble.com/Problem-with-%27dispatched-queue%27-tp27223270p27225878.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.