Re: [JMS] Creating connections & destinations dynamically

2011-02-09 Thread Rajith Attapattu
On Mon, Feb 7, 2011 at 6:55 PM, Andrew Kennedy <
andrewinternatio...@gmail.com> wrote:

> On 7 Feb 2011, at 17:00, Rajith Attapattu wrote:
>
>> So far I have only heard positive comments about this approach.
>> Does anybody have any concerns about the approach in general or any
>> comments
>> about how it should be done if it's needed ?
>>
>
> Well, not negative, but I *do* have some questions, which are possibly just
> due to my lack of knowledge of existing documentation and processes.
>
> Basically, how are we going to ensure that this new API never gets
> deprecated? Where do we state/promise these things? There isn't a page of
> Javadoc on the Qpid site showing our fixed, stable, public API sets. I'm
> aware of the docbook/PDF documentation and Java programming guides, but I
> was thinking of something more formal. Anyway, if we can make such a
> statement about your proposed API,


Very good question. I have the same concern as yours for all our public APIs
not just the java client.
We do proclaim that we have a common Messaging API for all our non JMS
clients (Ex. Python, C++, Perl ..etc)
But no where in our website (or for that matter in our documentation) we
specify what this common API is.

I think we need to specify this prominently somewhere in our documentation.
We could list our Java client extensions in the same location.



> why can't we just make that same statement about AMQConnectionFactory, and
> add some extra helper methods to it, as needed, documenting and publishing
> as we go? I believe the effect would be identical...
>

To begin with I don't think the AMQConnectionFactory is a good candidate to
expose as a public interface as it is.
There are many public methods in it that are unnecessary for our purpose and
will only confuse users.
There are also several helper methods that we may need to add like
createDestination which will only make the ConnectionFactory implementation
bloated.

Also there can be more than one ConnectionFactory implementation in the code
base.
There has been some interest in one which can do connection pooling.

We need to find a way to hide all these complexities behind a simple stable
interface that can be easily maintained.
Exposing the AMQConnectionFactory as it is will not cut it.


> In principle, I agree we need to set up some stable APIs but, why not start
> off by documenting and improving the existing ones first, and then add your
> proposed code in there?
>

I am not against this at all. But I am not sure which of the existing ones
are good candidates for being promoted as public interfaces (obviously after
some rework) ?


>
> I would suggest firstly deprecating AMQConnectionFactory entirely and
> making a QpidConnectionFactory interface, and having some implementations
> such as an AbstractQpidConnectionfractory parent and then
> QpidJndiConnectionFactory, QpidPropertiesFileConnectionfactory or
> QpidUrlConnectionFactory, and also a QpidConnectionFactoryHelper class with
> your static methods. We then document the static methods and the interface
> methods as public APIs, as well as any extra methods provided by the other
> implementations. Note that this gets rid of AMQP in the class name, which
> is, IMHO, a Bad Thing. I suspect most of the API will probably consist of
> constructors, or maybe static methods to get concrete implementations, and
> there's still a few more things we need to think about here in terms of API
> design.
>
> Does any of this fit in with your ideas at all?
>

I think regardless of exposing a public interface or not, we probably need
to do some refactoring along the lines you are proposing.
The JMS client is certainly in need of some refactoring, especially the
various AMQXXX classes.
However IMO any of that work should be done with keeping 1.0 in mind.

There are lots of ideas about how the restructuring should be and the timing
etc..
That is why I think it's all the more important that we come up with a very
simple interface where we can easily swap any implementation at any time
without affecting our users.
Exposing what we have now, might not help us here.


> If we do this properly, we can also improve our Spring integration, since
> the org.apache.qpid.jndi.PropertiesFileInitialContextFactory is a bit too
> generic, replacing it with the above factory concrete implementations?
>

Integration with various containers is becoming increasingly important.
There have been various queries about integrating into other jndi
mechanisms, various app servers, ESB's, containers like spring etc..
Therefore we need to consider all these possibilities when designing our
interface.



> Other classes we need to expose with proper Javadoc documentation would be
> the URL classes, which possibly need a bit of attention if we want to add
> the new JMS URL syntax as well. These can maybe all extend a generic QpidUrl
> class, with JmsUrl, BindingUrl, AddressUrl, AmqpUrl or whatever as concrete
> implementations to choose from, making 

Re: svn commit: r1069126 [1/24] - in /qpid/site/docs/books: 0.7/AMQP-Messaging-Broker-CPP-Book/html-single/ 0.7/AMQP-Messaging-Broker-CPP-Book/html/ 0.7/AMQP-Messaging-Broker-CPP-Book/pdf/ 0.7/AMQP-Me

2011-02-09 Thread Jonathan Robie

On 02/09/2011 04:52 PM, Robbie Gemmell wrote:

These weren't missing in so much as I deliberately elected not to
commit them, being that its several megabytes of stuff we don't
appear to even be using. The single-page html output has never been
linked from the website that I can see, there are 6 copies of the
same image files now, and the .fo files generated while making the
PDF don't seem like they should ever be getting committed?

Robbie


Some of these pages really are missing, e.g. new chapters that have been 
added to Programming in Apache Qpid and some other content. I made this 
commit because someone was clicking on links that didn't resolve.


The .fo files aren't needed.

I like the single-page html, some things look a lot better there than in 
the PDF, and it's very easy to search for things in it. I'd like to see 
that linked to from the site.


The documents are meant to be standalone, so that a single directory and 
its subdirectories can be used as a document. That's the reason the 
image files are copied. We could try to optimize this if there's a 
reason to.


Jonathan

-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



RE: svn commit: r1069126 [1/24] - in /qpid/site/docs/books: 0.7/AMQP-Messaging-Broker-CPP-Book/html-single/ 0.7/AMQP-Messaging-Broker-CPP-Book/html/ 0.7/AMQP-Messaging-Broker-CPP-Book/pdf/ 0.7/AMQP-Me

2011-02-09 Thread Robbie Gemmell
These weren't missing in so much as I deliberately elected not to commit them, 
being that its several megabytes of stuff we don't appear to even be using. The 
single-page html output has never been linked from the website that I can see, 
there are 6 copies of the same image files now, and the .fo files generated 
while making the PDF don't seem like they should ever be getting committed?

Robbie

> -Original Message-
> From: jonat...@apache.org [mailto:jonat...@apache.org]
> Sent: 09 February 2011 21:40
> To: comm...@qpid.apache.org
> Subject: svn commit: r1069126 [1/24] - in /qpid/site/docs/books:
> 0.7/AMQP-Messaging-Broker-CPP-Book/html-single/ 0.7/AMQP-Messaging-
> Broker-CPP-Book/html/ 0.7/AMQP-Messaging-Broker-CPP-Book/pdf/ 0.7/AMQP-
> Messaging-Broker-Java-Book/AMQP-Messaging-Broker-Java-Book...
> 
> Author: jonathan
> Date: Wed Feb  9 21:39:27 2011
> New Revision: 1069126
> 
> URL: http://svn.apache.org/viewvc?rev=1069126&view=rev
> Log:
> Adding missing pages that were not being tracked by svn.
> 



-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



[jira] Resolved: (QPID-3040) Closed Receivers Do Not Delete Queues and Do Not Reroute Acquired Messages to Alternate Exchange

2011-02-09 Thread Jonathan Robie (JIRA)

 [ 
https://issues.apache.org/jira/browse/QPID-3040?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jonathan Robie resolved QPID-3040.
--

   Resolution: Fixed
Fix Version/s: 0.9

Fixed in revision 1069030

The C++ messaging client library now releases pending messages when a Receiver 
is closed.

This  releases only messages in the client's cache that have not been read. It 
does not release messages that have been read by the client application, but 
not acknowledged.


> Closed Receivers Do Not Delete Queues and Do Not Reroute Acquired Messages to 
> Alternate Exchange 
> -
>
> Key: QPID-3040
> URL: https://issues.apache.org/jira/browse/QPID-3040
> Project: Qpid
>  Issue Type: Bug
>Reporter: Jonathan Robie
>Assignee: Jonathan Robie
> Fix For: 0.9
>
>
> Bug description is here:
> https://bugzilla.redhat.com/show_bug.cgi?id=674678

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



[jira] Commented: (QPID-3041) Make dist process does not package the .NET Binding source

2011-02-09 Thread Chuck Rolke (JIRA)

[ 
https://issues.apache.org/jira/browse/QPID-3041?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12992538#comment-12992538
 ] 

Chuck Rolke commented on QPID-3041:
---

>From the dev mailing list:

When I add the sources to a Makefile.am then I get a packaging error from tar: 
file name too long.
I can see several solutions:

1. Rename or move the source files. This would be tedious and not a great long 
term solution.

2. Use a different version of tar. Support for 256 character file names has 
been around for a while and would satisfy the name length problem. However, I 
don't take changing the tar format lightly.

3. Tar/zip the .NET Binding sources and package the resulting tar.gz file 
instead of the individual files. I tend to favor this approach.

Any ideas or opinions?

After further review option #2 is what I plan to use. Simply adding "tar-ustar" 
to  AM_INIT_AUTOMAKE([dist-bzip2 subdir-objects tar-ustar]) fixes the issue. 
From the automake doc: 
  tar-ustar selects the ustar format defined by POSIX 1003.1-1988. 
  This format is believed to be old enough to be portable. 
1988 is more than half way back to the epoch! No worries.


> Make dist process does not package the .NET Binding source
> --
>
> Key: QPID-3041
> URL: https://issues.apache.org/jira/browse/QPID-3041
> Project: Qpid
>  Issue Type: Bug
>  Components: Dot Net Client
>Affects Versions: 0.8
> Environment: Packaging
>Reporter: Chuck Rolke
>Assignee: Chuck Rolke
>
> The 0.8 kit qpid-cpp-0.8.tar.gz does not include the .NET Binding source.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



[jira] Commented: (QPID-3047) The QueueDepthWithSelectorTest fails on 0-10 profiles

2011-02-09 Thread Andrew Kennedy (JIRA)

[ 
https://issues.apache.org/jira/browse/QPID-3047?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12992529#comment-12992529
 ] 

Andrew Kennedy commented on QPID-3047:
--

Understood.

This fixes the situation where the client is requesting the queue depth, and 
there are queued up unsent acks because neither 1 or 2 has happenend yet. In 
this case, the reported queue depth will be wrong, so sending any unflushed 
acks beforehand is the correct thing to do for this type of synchronous 
operation.

> The QueueDepthWithSelectorTest fails on 0-10 profiles
> -
>
> Key: QPID-3047
> URL: https://issues.apache.org/jira/browse/QPID-3047
> Project: Qpid
>  Issue Type: Bug
>  Components: Java Client
>Affects Versions: 0.9
>Reporter: Andrew Kennedy
>Assignee: Andrew Kennedy
> Fix For: 0.9
>
>
> The QueueDepthWithSelector needs refactored to use QpidBrokerTestCase rather 
> than being hardcoded simply the 0-8 iVM broker. Once this is done, the test 
> fails on 0-10 profiles,  as the session is not flushing acks correctly.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



[jira] Created: (QPID-3048) InternalBrokerBasecase not removing all log actors

2011-02-09 Thread Andrew Kennedy (JIRA)
InternalBrokerBasecase not removing all log actors
--

 Key: QPID-3048
 URL: https://issues.apache.org/jira/browse/QPID-3048
 Project: Qpid
  Issue Type: Bug
  Components: Java Broker
Affects Versions: 0.9
Reporter: Andrew Kennedy
Assignee: Andrew Kennedy
Priority: Minor
 Fix For: 0.9


The InternalBrokerbaseCase checks if CurrentActor.get() returns null, however 
in CurrentActor this can never happen, since we return a default if the stack 
is empty. Adding a removeAll method to CurrentActor will allow test cases to 
clean up properly.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



[jira] Commented: (QPID-3047) The QueueDepthWithSelectorTest fails on 0-10 profiles

2011-02-09 Thread Rajith Attapattu (JIRA)

[ 
https://issues.apache.org/jira/browse/QPID-3047?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12992521#comment-12992521
 ] 

Rajith Attapattu commented on QPID-3047:


In AMQSession_0_10.java, when using AUTO_ACK or DUPS_OK the acknowledgements 
are batched to improve performance.
The ack are flushed based one of the following conditions (which ever happens 
first).

1. When the ack timer fires. The ack-time is configure via 
qpid.session.max_ack_delay
2. if un_acked_msg_count > max_prefetch/2. 

For the test case you could force it to ack more frequently by having a smaller 
prefetch.

(Please note as per the JMS spec AUTO_ACK should ack each message before it 
serves up the next message. However by default our AUTO_ACK acts the same as 
DUPS_OK.)

> The QueueDepthWithSelectorTest fails on 0-10 profiles
> -
>
> Key: QPID-3047
> URL: https://issues.apache.org/jira/browse/QPID-3047
> Project: Qpid
>  Issue Type: Bug
>  Components: Java Client
>Affects Versions: 0.9
>Reporter: Andrew Kennedy
>Assignee: Andrew Kennedy
> Fix For: 0.9
>
>
> The QueueDepthWithSelector needs refactored to use QpidBrokerTestCase rather 
> than being hardcoded simply the 0-8 iVM broker. Once this is done, the test 
> fails on 0-10 profiles,  as the session is not flushing acks correctly.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



[jira] Created: (QPID-3047) The QueueDepthWithSelectorTest fails on 0-10 profiles

2011-02-09 Thread Andrew Kennedy (JIRA)
The QueueDepthWithSelectorTest fails on 0-10 profiles
-

 Key: QPID-3047
 URL: https://issues.apache.org/jira/browse/QPID-3047
 Project: Qpid
  Issue Type: Bug
  Components: Java Client
Affects Versions: 0.9
Reporter: Andrew Kennedy
Assignee: Andrew Kennedy
 Fix For: 0.9


The QueueDepthWithSelector needs refactored to use QpidBrokerTestCase rather 
than being hardcoded simply the 0-8 iVM broker. Once this is done, the test 
fails on 0-10 profiles,  as the session is not flushing acks correctly.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org



[jira] Resolved: (QPID-1688) Need more powerful search functionality

2011-02-09 Thread Ted Ross (JIRA)

 [ 
https://issues.apache.org/jira/browse/QPID-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ted Ross resolved QPID-1688.


   Resolution: Fixed
Fix Version/s: 0.9

This request is resolved by QPID-3046 in which a generalized, agent-side 
predicate capability has been introduced.

> Need more powerful search functionality
> ---
>
> Key: QPID-1688
> URL: https://issues.apache.org/jira/browse/QPID-1688
> Project: Qpid
>  Issue Type: Wish
>  Components: Qpid Managment Framework
>Reporter: Ian Main
>Assignee: Ted Ross
> Fix For: 0.9
>
>
> It would be very nice to have more powerful search functionality in qpid.  
> Right now we just have key/value equality tests.  Be nice to have regular 
> expressions, negation of values etc.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira



-
Apache Qpid - AMQP Messaging Implementation
Project:  http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org