You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by holger <ho...@credit-suisse.com> on 2012/08/23 15:46:12 UTC

Evaluation of requirements

Hi everyone,
my evaluation of QPID v0.14 features is slowly approaching the end.
Unfortunately I haven't really found reliable information on each of my
requirements. I would like to ask you to verify whether the following
statements are true (in C++ broker and JMS client) or not:

1) Destination bridging (as in Tibco EMS) is not supported.
2) There is no monitoring event to detect exceedance of broker memory
limits.
3) No monitoring event is created upon purging messages in qpid-tool
4) There is no feature to detect slow/hung consumers
5) The installation of the C++ broker requires root privileges
6) There is no message rollback limit (such as 10 times)
7) There is no message processing time threshold to identify messages
staying in a queue longer than a specified threshold
8) SQL92-compliant message selectors as defined in the JMS standard are not
supported
9) Message selectors cannot be applied to messages that are routed between
brokers.
10) There is no option to specify a maximum log file size, before rotation
to another log file takes place
11) How does the fanout functionality work? Can I use it to do reliable
multicast as in PGM or is it more like a general broadcast without any
guarantees?
12) Message compression is not supported (only by the application itself)
13) There is no way to do message tracing in the broker.

I know that this is a very long list, but I thought that creating 13 posts
on the mailing list would lead to even more chaos. Thank you for your
support.

Regards,
Holger



--
View this message in context: http://qpid.2158936.n2.nabble.com/Evaluation-of-requirements-tp7581225.html
Sent from the Apache Qpid users mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


Re: Evaluation of requirements

Posted by Oleksandr Rudyy <or...@gmail.com>.
Hi Holger,

The selector expression you have provided in your post is correct and
should work with Qpid JMS client.

I suspect that in your java code you specified wrong quotes.

Could you please check in you code that standard ACII single quotes
are used in a selector expression?

Kind Regards,
Alex

On 29 August 2012 12:00, Caesar Holger (KGQI 1)
<ho...@credit-suisse.com> wrote:
> The full output is:
>
> javax.jms.InvalidSelectorException: cannot create consumer because of
> selector issue
> at
> org.apache.qpid.client.BasicMessageConsumer_0_10.<init>(BasicMessageCons
> umer_0_10.java:95)
>         at
> org.apache.qpid.client.AMQSession_0_10.createMessageConsumer(AMQSession_
> 0_10.java:545)
>         at
> org.apache.qpid.client.AMQSession_0_10.createMessageConsumer(AMQSession_
> 0_10.java:87)
>         at
> org.apache.qpid.client.AMQSession$4.execute(AMQSession.java:2067)
>         at
> org.apache.qpid.client.AMQSession$4.execute(AMQSession.java:2040)
>         at
> org.apache.qpid.client.AMQConnectionDelegate_0_10.executeRetrySupport(AM
> QConnectionDelegate_0_10.java:369)
>         at
> org.apache.qpid.client.AMQConnection.executeRetrySupport(AMQConnection.j
> ava:586)
>         at
> org.apache.qpid.client.failover.FailoverRetrySupport.execute(FailoverRet
> rySupport.java:102)
>         at
> org.apache.qpid.client.AMQSession.createConsumerImpl(AMQSession.java:203
> 8)
>         at
> org.apache.qpid.client.AMQSession.createConsumer(AMQSession.java:1004)
>         at general.Sub.<init>(Sub.java:128)
>         at general.Sub.startTest(Sub.java:432)
>         at general.TestCase.runTestCase(TestCase.java:73)
>         at general.TestCase.main(TestCase.java:205)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
> a:57)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
> Impl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:616)
>         at
> org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader
> .java:58)
>
>
> -----Original Message-----
> From: Gordon Sim [mailto:gsim@redhat.com]
> Sent: Mittwoch, 29. August 2012 12:55
> To: users@qpid.apache.org
> Subject: Re: Evaluation of requirements
>
> On 08/29/2012 10:52 AM, Caesar Holger (KGQI 1) wrote:
>
>>>> 8) SQL92-compliant message selectors as defined in the JMS standard
>> are not
>>>> supported
>>> They are not yet supported by the c++ broker, but the JMS client can
>>> evaluate them on the client side. So logically the feature is there,
>>> though less efficiently implemented than if they were evaluated
> server
>> side.
>> I tried using a message selector in the client using an SQL92
> compatible
>> string from the Oracle JMS API ("NewsType = 'Sports' OR NewsType =
>> 'Opinion'"). However I get the following exception:
>> "javax.jms.InvalidSelectorException: cannot create consumer because of
>> selector issue"
>> Do you have any idea why this is?
>
> No, I don't see why that should be invalid. Its not a particularly
> helpful error message either... Was there a linked exception tied to
> that with any more detail.
>
> Anyone on the JMS side able to suggest anything here?
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


RE: Evaluation of requirements

Posted by "Caesar Holger (KGQI 1)" <ho...@credit-suisse.com>.
The full output is:

javax.jms.InvalidSelectorException: cannot create consumer because of
selector issue
at
org.apache.qpid.client.BasicMessageConsumer_0_10.<init>(BasicMessageCons
umer_0_10.java:95)
        at
org.apache.qpid.client.AMQSession_0_10.createMessageConsumer(AMQSession_
0_10.java:545)
        at
org.apache.qpid.client.AMQSession_0_10.createMessageConsumer(AMQSession_
0_10.java:87)
        at
org.apache.qpid.client.AMQSession$4.execute(AMQSession.java:2067)
        at
org.apache.qpid.client.AMQSession$4.execute(AMQSession.java:2040)
        at
org.apache.qpid.client.AMQConnectionDelegate_0_10.executeRetrySupport(AM
QConnectionDelegate_0_10.java:369)
        at
org.apache.qpid.client.AMQConnection.executeRetrySupport(AMQConnection.j
ava:586)
        at
org.apache.qpid.client.failover.FailoverRetrySupport.execute(FailoverRet
rySupport.java:102)
        at
org.apache.qpid.client.AMQSession.createConsumerImpl(AMQSession.java:203
8)
        at
org.apache.qpid.client.AMQSession.createConsumer(AMQSession.java:1004)
        at general.Sub.<init>(Sub.java:128)
        at general.Sub.startTest(Sub.java:432)
        at general.TestCase.runTestCase(TestCase.java:73)
        at general.TestCase.main(TestCase.java:205)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:57)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at
org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader
.java:58)


-----Original Message-----
From: Gordon Sim [mailto:gsim@redhat.com] 
Sent: Mittwoch, 29. August 2012 12:55
To: users@qpid.apache.org
Subject: Re: Evaluation of requirements

On 08/29/2012 10:52 AM, Caesar Holger (KGQI 1) wrote:

>>> 8) SQL92-compliant message selectors as defined in the JMS standard
> are not
>>> supported
>> They are not yet supported by the c++ broker, but the JMS client can
>> evaluate them on the client side. So logically the feature is there,
>> though less efficiently implemented than if they were evaluated
server
> side.
> I tried using a message selector in the client using an SQL92
compatible
> string from the Oracle JMS API ("NewsType = 'Sports' OR NewsType =
> 'Opinion'"). However I get the following exception:
> "javax.jms.InvalidSelectorException: cannot create consumer because of
> selector issue"
> Do you have any idea why this is?

No, I don't see why that should be invalid. Its not a particularly 
helpful error message either... Was there a linked exception tied to 
that with any more detail.

Anyone on the JMS side able to suggest anything here?




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


Re: Evaluation of requirements

Posted by Gordon Sim <gs...@redhat.com>.
On 08/29/2012 10:52 AM, Caesar Holger (KGQI 1) wrote:
> Hi Gordon,
>
>>> 4) There is no feature to detect slow/hung consumers
>> You can get an alert when the backlog of messages for a subscriber
>> reaches a configured level. That would be indicative of a slow
> consumer.
> How can I do that? Setting something like
> "default-event-threshold-ratio" or "alert_size"? Can we be sure that it
> is one single consumer that is too slow on reading and not just the
> ensemble of all consumers?

Yes, you can set the point at which an alert is generated on a per queue 
basis, and each topic subscriber will have their own queue using 
qpid.alert_size and/or qpid.alert_count when creating the queue (or 
x-qpid-maximum-message-size, x-qpid-maximum-message-count which are 
aliases for the same options).

(If you have a queue shared between multiple consumers then the fact 
that one of them is slow is less relevant; the backing up of the queue 
can of course still be detected in the same manner).

The alert message will contain the queue name and the depth (message 
count & aggregate size). That is usually reasonably simple to tie back 
to a particular topic subscription.

>>> 8) SQL92-compliant message selectors as defined in the JMS standard
> are not
>>> supported
>> They are not yet supported by the c++ broker, but the JMS client can
>> evaluate them on the client side. So logically the feature is there,
>> though less efficiently implemented than if they were evaluated server
> side.
> I tried using a message selector in the client using an SQL92 compatible
> string from the Oracle JMS API ("NewsType = 'Sports' OR NewsType =
> 'Opinion'"). However I get the following exception:
> "javax.jms.InvalidSelectorException: cannot create consumer because of
> selector issue"
> Do you have any idea why this is?

No, I don't see why that should be invalid. Its not a particularly 
helpful error message either... Was there a linked exception tied to 
that with any more detail.

Anyone on the JMS side able to suggest anything here?




---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


RE: Evaluation of requirements

Posted by "Caesar Holger (KGQI 1)" <ho...@credit-suisse.com>.
Hi Gordon,

>> 4) There is no feature to detect slow/hung consumers
>You can get an alert when the backlog of messages for a subscriber 
>reaches a configured level. That would be indicative of a slow
consumer.
How can I do that? Setting something like
"default-event-threshold-ratio" or "alert_size"? Can we be sure that it
is one single consumer that is too slow on reading and not just the
ensemble of all consumers?

>> 8) SQL92-compliant message selectors as defined in the JMS standard
are not
>> supported
>They are not yet supported by the c++ broker, but the JMS client can 
>evaluate them on the client side. So logically the feature is there, 
>though less efficiently implemented than if they were evaluated server
side.
I tried using a message selector in the client using an SQL92 compatible
string from the Oracle JMS API ("NewsType = 'Sports' OR NewsType =
'Opinion'"). However I get the following exception:
"javax.jms.InvalidSelectorException: cannot create consumer because of
selector issue"
Do you have any idea why this is? NewsType is a String property which I
am creating manually in the producer, but that shouldn't be a problem at
the time the client creates the consumer.

>> 13) There is no way to do message tracing in the broker.
>No, but if you can describe what you would like here in a bit more 
>detail, that would be useful for possible future development.
I'll try to get back on that.

Regards,
Holger

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


Re: Evaluation of requirements

Posted by Gordon Sim <gs...@redhat.com>.
On 08/23/2012 02:46 PM, holger wrote:
> my evaluation of QPID v0.14 features is slowly approaching the end.
> Unfortunately I haven't really found reliable information on each of my
> requirements. I would like to ask you to verify whether the following
> statements are true (in C++ broker and JMS client) or not:
>
> 1) Destination bridging (as in Tibco EMS) is not supported.

There is no support for bridging between two (or more) Destinations on 
the same broker.

> 2) There is no monitoring event to detect exceedance of broker memory
> limits.

Not directly no. However you can get alerts when queues hit particular 
sizes you have configured.

> 3) No monitoring event is created upon purging messages in qpid-tool

Correct.

> 4) There is no feature to detect slow/hung consumers

You can get an alert when the backlog of messages for a subscriber 
reaches a configured level. That would be indicative of a slow consumer.

> 5) The installation of the C++ broker requires root privileges

Only for installation into the default locations. You can install it 
wherever you wish (by setting the prefix option when invoking configure) 
and that should work for any user providing you have the necessary 
permission to the install location.

> 6) There is no message rollback limit (such as 10 times)

Correct.

> 7) There is no message processing time threshold to identify messages
> staying in a queue longer than a specified threshold

Correct.

> 8) SQL92-compliant message selectors as defined in the JMS standard are not
> supported

They are not yet supported by the c++ broker, but the JMS client can 
evaluate them on the client side. So logically the feature is there, 
though less efficiently implemented than if they were evaluated server side.

> 9) Message selectors cannot be applied to messages that are routed between
> brokers.

Correct.

> 10) There is no option to specify a maximum log file size, before rotation
> to another log file takes place

There is no such option when logging directly to a file. However 
rotation is possible via syslog and you can have the broker log there.

> 11) How does the fanout functionality work? Can I use it to do reliable
> multicast as in PGM or is it more like a general broadcast without any
> guarantees?

It is the latter, a general broadcast feature. Unlike the other exchange 
types (direct, topic) there is no conditional routing based on the 
message itself.

> 12) Message compression is not supported (only by the application itself)

Correct

> 13) There is no way to do message tracing in the broker.

No, but if you can describe what you would like here in a bit more 
detail, that would be useful for possible future development.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org