On 9/23/06, Rob Lugt <[EMAIL PROTECTED]> wrote:
I modified the test program to call IMessage.Acknowledge, but unfortunately it didn't make any difference. One thing I've discovered that does make a difference is if the broker is moved onto the local machine. When all three components (broker, publisher and consumer) are on one machine, the message rate is fast and constant. Unfortunately this is no real help because it doesn't match our target environment.
I wonder if you run a Java based consumer at the same time - does the Java consumer slow down too or is it just the C# one? If you just run the Java consumer, does it still slow down? Am wondering if its a C# specific issue
I'm going to take a wild stab in the dark... Is it possible that my consumer is being identified as a "slow consumer", and therefore being given messages more slowly? I'm completely ignorant to the internal workings of the AMQ broker, so have little idea if this is likely - but I did read the article [1] which indicates slow consumers are given special attention and so the symptoms could possibly be explained by it. If this does turn out to be the case, it remains strange for (at least) two reasons: 1) the consumer is actually pretty fast, but even though it does nothing with the received message it can't consume quite consume at the rate that the producer can produce. 2) it seems the consumer slows down as soon as there are >1000 messages pending. I would expect this slowdown to occur at 32,766 which is, I understand, the prefetch limit for a non-durable topic[2]. Anyway, to test this theory I added "?consumer.prefetchSize=2000" to the TOPIC name in the consumer. This made no difference :-( Can you confirm that all destination options are transported to the broker via NMS/OpenWire?
I'm afraid those options are only supported currently in the Java client. We've not implemented those in C# yet.
Another related thought struck me. How can I be sure that I've created a non-durable Topic? I use the ISession.GetTopic() method which magically creates the topic for me. I presume the result is a non-durable topic?
Things are persistent by default. To use non-persistent topics/queues you set the delivery mode on a producer - which in NMS is the Persistent property http://incubator.apache.org/activemq/nms/ndoc/NMS.IMessageProducerMembers.html
Thanks for the suggestions. Hopefully I've given a clearer picture of the problem.
BTW I wonder if you get the same results with a java producer too? -- James ------- http://radio.weblogs.com/0112098/
