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/

Reply via email to