Hi Helen,

The short answer to your question is that it is the documentation which is
incorrect, and the behaviour you are seeing is expected.

The long answer is, when that documentation was composed a segment was
missed out indicating this, and needs to be added to the docs. The
behaviour listed for when no group is specified is only true of the
'non-shared' groups supported by the Java broker, in the C++/shared group
mode any messages recieved without an explicit group value are all assigned
to a default group of 'qpid.no-group'. This is as per the behaviour of the
C++ broker itself, which is explained in the C++ broker docs at the end of
the following page
http://qpid.apache.org/releases/qpid-0.24/cpp-broker/book/Using-message-groups.html.
For the 0.24 Java broker, this default shared group can be changed
broker-wide using the Java system property
'qpid.broker_default-shared-message-group', or can be overriden for an
individual queue during creation programatically via AMQP clients or the
management interfaces through use of the argument
'qpid.default-message-group' or 'messageGroupDefaultGroup'.

I coincidentally happened to have fixed a defect with the shared groups
functionality last night on trunk. Its not yet included in the imminent
0.26 release, though I am about to request whether that is possible.
https://issues.apache.org/jira/browse/QPID-5450

Robbie

On 8 January 2014 02:43, Helen Kwong <helenkw...@gmail.com> wrote:

> Hi,
>
> I use the Java broker and client, version 0.16, and am considering using
> the message grouping feature (
>
> http://qpid.apache.org/releases/qpid-0.24/java-broker/book/Java-Broker-Queues.html#Java-Broker-Queues-OtherTypes-Message-Grouping
> ).
> From testing I've done, there seems to be a bug with the C++ compatibility
> model, and I'm wondering if this is a known issue. Specifically, in my test
> I have a queue configured to use a group header field with
> "qpid.group_header_key" and C++ mode with "qpid.shared_msg_group", and have
> multiple listeners to the queue. Each listener will sleep for a short
> amount of time when it receives a message before returning. I then enqueue
> 10 messages that do not have a value in the group header field to the
> queue. Since the doc says that messages without a value in the grouping
> header will be delivered to any available consumer, the behavior I expect
> is that the messages will be processed in parallel, i.e., when listener 1
> is holding on to a message and sleeping, listener 2 can receive another
> message from the queue. But what I see is that the messages are processed
> serially -- message 2 won't be received by some thread until message 1 is
> done. When I use the default mode instead of C++ mode, then I get the
> parallel processing behavior.
>
> Is this is a known bug, and is there a fix for it already?
>
> Thanks,
> Helen
>

Reply via email to