RE: Documentaiton/clarification of heartbeat for broker

2013-04-10 Thread Jan Bares
Thanks Gordon. Just to clarify default behaviour - for Java clients the default 
is 120s but for C++/Python clients the heartbeating is off and must be 
explicitly set? In other words, C++/Python clients that are dead (OS crash, 
network problems, client is hung)  will be never removed from broker  list of 
connected clients and will be included in max-connections (default 500) count?

Thank you, Jan


 -Original Message-
 From: Gordon Sim [mailto:gordon.r@gmail.com]
 Sent: Tuesday, April 09, 2013 7:37 PM
 To: users@qpid.apache.org
 Subject: Re: Documentaiton/clarification of heartbeat for broker

 On 9 April 2013 15:28, Jan Bares jan.ba...@wood.cz wrote:

  I cannot find any documentation about how C++ broker detects dead
 clients.
  In client I can set heartbeat/idle_timeout - this will allow client to
  detect dead broker but I have not found any documentation how broker
 can
  detect dead clients. It even seems like broker doesn't use TCP_KEEPALIVE.
 
  Can anyone help me?
 

 The broker  will use heartbeats for those connections where the client
 negotiates a non-zero interval for them. It doesn't use TCP_KEEPALIVE.
DISCLAIMER

 WOOD  Company Financial Services, a.s. and its branches are 
authorized and regulated by the CNB as Home State regulator and in Poland by 
the KNF, in Slovakia by the NBS and in the UK by the FSA as Host State 
regulators. For further information about WOOD  Co., its investment services, 
financial instruments and associated risks, safeguard client assets (incl. 
compensation schemes) and contractual relationship please see our website at 
www.wood.comhttp://www.wood.com/ under section Corporate Governance.
 Unless otherwise stated, this transmission is neither an offer nor the 
solicitation of an offer to sell or purchase any investment. All estimates, 
opinions and other information contained herein are subject to change without 
notice and are provided in good faith but without legal responsibility or 
liability. Opinion may be personal to the author and may not reflect the 
opinions of WOOD  Co. Communications from sales persons, sales traders or 
traders should not be regarded as investment research and may contain opinions 
or trading ideas which are different from WOOD  Co. investment research 
opinions.
 This e-mail and any attachments are confidential and may be privileged 
or otherwise protected from disclosure. If you are not a named addressee you 
must not use, disclose, distribute, copy, print or rely on this e-mail and any 
of its attachments. Please notify the sender that you have received this email 
by mistake by replying to the email, and then delete the email and any copies 
of it. Although WOOD  Co. routinely screens e-mails for viruses, addressees 
should scan this e-mail and any attachments for viruses. WOOD  Co. makes no 
representation or warranty as to the absence of viruses in this e-mail or any 
attachments. Please note that to ensure regulatory compliance and for the 
protection of our clients and business, we may monitor and read e-mails sent to 
and from our server(s).


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



Re: [c++] Status of the AMQP 1.0 work

2013-04-10 Thread Fraser Adams

Hi Gordon,
Comments inline below.

Frase

On 09/04/13 19:07, Gordon Sim wrote:

On 6 April 2013 10:40, Fraser Adams fraser.ad...@blueyonder.co.uk wrote:



The x-bindings property is not currently supported for AMQP 1.0 in
nodes or links. This has really been a question of priorities rather
than ruling out any mapping. Though I don't think a generic binding
solution is appropriate for the 1.0 implementation, I'm eager to here
of use cases that would be affected here and see how best to address
them.


I use the headers exchange almost
exclusively in my operational system and my Addresses are of the form:

string address = testqueue; {create: receiver, node: {x-declare:
{arguments: {'qpid.policy_type': ring, 'qpid.max_size': 5}},
x-bindings: [{exchange: 'amq.match', queue: 'testqueue', key: 'data1',
arguments: {x-match: all, data-service: amqp-delivery, item-owner:
fadams}}]}};



Does each consumer create its own queue?
Sort of. Each logical consumer does, but a logical consumer may 
comprise several physical nodes, they all use the same queue which 
allows distribution of messages across the physical nodes giving the 
ability to scale out quite easily.

  I actually think this will be both
simpler and more powerful over 1.0 as the plan is to allow you to subscribe
to an exchange (which you can already do) using a selector.
Subscribing to an exchange is a term that makes me shudder from past 
experience.


I'll try to explain, my system is perhaps a little unusual. I've got a 
pretty large federated topology with lots of *real time* C++ producers 
at one end of the topology and something of a mixed economy of mainly 
Java and C++ (and a few Python) consumers mostly at the right hand 
side having passed through some intermediate data consolidating 
brokers. I've also got a few higher rate consumers subscribing directly 
off the intermediate brokers. The mean message size tends to be 
reasonably large, something like 50K but the tails are long and some 
messages might be tens of MB.


Hopefully you noticed what I had in the x-declare of the example 
Address. I'm using circular queues for a reason - high rate real time 
producer, and we generally actually use 2GB queues to give moderate 
elastic buffering given data rates and message size.


I've got nothing against the logical subscribing to an exchange 
pattern and it is pretty common to see addresses simply expressing the 
topic, but as you are aware under the hood this creates an autodelete, 
exclusive, reject policy, default size queue!! I can't live with any of 
those characteristics let alone all of them :-)


Indeed when I said it makes me shudder I'm actually thinking of our past 
federation experiences, as you know static and dynamic routes are more 
explicitly described as static and dynamic /exchange/ routes, because 
they logically allow exchanges to be connected together. This is 
conceptually very much like one exchange subscribing to another 
exchange, but again they transparently create a queue almost completely 
unsuitable for my purpose :-( We've had to use queue routes simply 
because I can control the queue config. You wouldn't believe how fast 
default size reject queues cause links to blow if one of my consumers 
misbehaves, which clearly results in total data loss to all my consumers 
not just the naughty one - not ideal.


I'd have *really* liked to be able to combine the rather elegant dynamic 
binding propagation of dynamic routes with the ability to specify the 
configuration of the queue/buffering used by the link with a great deal 
more precision than the defaults.


Hopefully that background give some insight into my subscribing to an 
exchange nerves :-/




Beyond that again if you notice from the example Address I use the 
headers exchange pretty much universally. To be fair my architecture is 
pretty much a publish/subscribe architecture and in the early days I 
started with topics, but to be honest the largely static data model 
and fairly inflexible wild-carding caused us to move to the headers 
exchange pretty quickly. It's a lot easier to add new data types for 
subscribing to with the headers exchange.


It hadn't escaped my notice that the bindings stanza was x-bindings 
but as far as I've been able to work out that's the only way to create 
bindings between the headers exchange and a named queue, indeed I 
thought that x-bindings was the only way to create bindings between say 
a user created topic exchange and a queue, though I may be wrong there.


If you can suggest how to say subscribe to a headers exchange without 
using x-bindings that'd be neat, it'll be something I've totally missed.


Re using a selector  I have to say that I'm definitely a big fan of 
message selectors. It's worth pointing a few things out though. I 
suspect that had message selectors been available when I started out 
with my system I might well have used the topic exchange (with a named 
queue!) plus message selectors. I've used 

Re: [c++] Status of the AMQP 1.0 work

2013-04-10 Thread Rob Godfrey
On 10 April 2013 13:38, Fraser Adams fraser.ad...@blueyonder.co.uk wrote:

 Hi Gordon,
 Comments inline below.

 Frase


 On 09/04/13 19:07, Gordon Sim wrote:

 On 6 April 2013 10:40, Fraser Adams fraser.ad...@blueyonder.co.uk**
 wrote:



[.. snip ..]



 Re using a selector  I have to say that I'm definitely a big fan of
 message selectors. It's worth pointing a few things out though. I suspect
 that had message selectors been available when I started out with my system
 I might well have used the topic exchange (with a named queue!) plus
 message selectors. I've used JMS a lot in the past and that's at pattern
 that worked well and was very flexible, however as I said earlier the topic
 exchange on its own didn't cut the mustard for my needs so my producers
 describe their data purely by means of properties/headers.

 I guess you know this already but message selectors tend to behave as
 filters, so as I understand it messages would pass from exchange to queue
 and the selector would apply a filter to what gets passed off the queue to
 a consumer. I guess that to my way of thinking selectors provide most
 benefit in the realm of fine grained filtering in that they allow quite
 sophisticated boolean expressions to be applied.

 Now in my scenario quite clearly message selectors will be a boon and
 offer some really useful fine grained control (I've wanted to be able to do
 not for ages - you might just about recall one of my very early posts on
 the headers exchange asking about a not operator). However I think that
 message selectors are best applied *in addition to* a subscription, without
 that loads of messages get delivered onto the queue which the consumer
 isn't interested in, which a) fills up the queue unnecessarily and b)
 overworks the message selector logic (which I suspect is more expensive
 than the exchange selection logic). In my case in particular producers
 deliver quite a diverse range of data at very high rate so filling up
 consumer queues unnecessarily would be pretty bad news.

 So in précis while I really like message selectors I'd want them *in
 addition to* headers bindings and good granularity of queue control (I
 don't ask for much).



So, just for info, the Java Broker currently allows for selectors to be
applied either at the consumer, or (for the Topic Exchange only, but this
should be made universal) on the binding ... that is the selector becomes a
further refinement of the binding preventing ingress of non-matching
messages into the queue.



 Another point about selectors. As I say I'm excited about them, but they
 are a new feature in the C++ broker (should be in 0.22 is that correct?).
 Andrew has done some great work so far, but he has very much said that the
 initial priority is on features and not interoperability. I'm fine with
 that initially, but you will undoubtedly have gathered from many of my
 posts that I'm really keen on maximum interoperability and cohesion. I'd
 really like to see the C++ message selectors ultimately become completely
 interoperable with JMS Message selectors. I've got no problem with an
 x-selector heading in the Address string but I'm really meaning at an API
 level too. I'd like to see JMS message selectors from JMS Clients propagate
 to the C++ and Java brokers and I'd like to see qpid::messaging extended to
 allow a JMS style message selector string to by passed to the
 createReceiver() call on Session. Clearly it's early days for C++ broker
 message selectors, but if that strategy wasn't part of the roadmap I'd be
 pretty uncomfortable.


+1 ... I think it's unfortunate that the current implementation doesn't
seem to match the Java implementation (nor do I remember this choice being
discussed on list).  There is a definition of what a an AMQP 1.0 selector
should look like and we should probably all try to converge on that, but in
the meantime increasing commonality rather than disparity would be nice.



The key then
 (if I understand the usecase) would be to ensure that the subscrption had
 the right lifecycle (i.e. you could reconnect to it without loss of
 messages while disconnected),

 Well the lifecycle aspects are certainly part of it, hopefully my comments
 above have explained the other aspects of the set of use cases that are
 fairly critical to me.



  One thing that's not clear from your write up is whether the x-bindings
 property you are talking about is in the messaging client, or whether it
 is
 the underlying x-bindings property that gets passed to the broker. I'm
 guessing the latter which would also affect AddressStrings created by JMS
 consumers and via QMF? (Although I use the C++ broker most of my
 consumers
 use JMS).

  It is in the messaging client. The x-bindings (and x-declare,
 x-subscribe),
 map directly to 0-10 commands. There is no analogous mechanism for
 *generic* binding operations in 1.0 - i.e. the ability to bind almost
 anything to anything, regardless of the node you are sending to or
 

Modularizing Qpid

2013-04-10 Thread Justin Ross
Hi, everyone.  We've recently been discussing the components of our
project in a couple different contexts.  This is a proposal to take
the outcomes of those discussion and apply them to how Qpid is
organized.

Thanks for taking a look,
Justin

## Related discussions

 - 
http://qpid.2158936.n2.nabble.com/Proposal-to-adjust-our-source-tree-layout-td7587237.html
 - http://qpid.2158936.n2.nabble.com/Website-update-td7590445.html

## The problem

For a long time, Qpid was in many respects treated as one thing, with
one release cycle.  Its parts were divided at the top level by
language, not function.

The division by language provides little incentive to factor out
dependencies into clean interfaces, and it has tended to mean that
developers often work in just one language silo.

It has also meant that our source modules have only a weak
correspondence to the user-focused release artifacts that we produce.

With Proton, we've broken the mold, and the overall picture of Qpid is
inconsistent and confusing, to the Qpid developers and users.

## The proposed approach

 - Qpid the project embraces a functional division of components

 - Each source component is self-contained and independent, with a
   focused purpose; among components, there are well defined
   dependencies

 - The source components should correspond closely to the pieces our
   users want to use independently; nonetheless, there would in some
   cases be multiple release artifacts from a component

 - Each component has its own set of branches, supporting independent
   releases

 - Each component should be neither too large nor too small; large
   enough to ease development and release management; small enough to
   represent a focused functional unit and to clarify dependencies

 - API components would in some cases also contain code shared by APIs
   and servers; the server would in that case depend on the API code
   base

## Proposed source components

 - Proton (this one already exists)
   - /qpid/proton/trunk/

 - JMS
   - /qpid/jms/trunk/
   - Depends on Proton

 - Java broker
   - /qpid/java-broker/trunk/
   - Depends on JMS (?)

 - Messaging API
   - /qpid/messaging-api/trunk/
   - Both the C++ (and bindings) and python implementations would
 move here
   - Depends on Proton

 - C++ broker
   - /qpid/cpp-broker/trunk/
   - Depends on Messaging-API

Note that this matches the download page of the new website pretty
nicely.

 - http://people.apache.org/~jross/transom/head/download.html

There's some debate about the right names for these things.  Don't
take my suggestions seriously.  I just had to put something down to
illustrate.  If I had my druthers, we'd give the two brokers names
that didn't include a programming language.

## First steps

This change can't happen all at once.  We propose to start with these:

 - Isolate JMS from the existing qpid/trunk/qpid tree
 - Isolate the Messaging API from the existing qpid/trunk/qpid tree

If this is agreed, the idea is to bite off this much during the 0.24
cycle.

## Developer infrastructure

This change calls for some work to support developers using multiple
components in one development environment.  This needs more
investigation.

## JIRA instances

We propose *not* to create new jira instances for each component.  We
can do that later on if necessary.  For now we can overload the
version field in the qpid jira instance to include a component name.

## A Qpid distribution of source component releases

While this scheme supports independent releases of each source
component, it doesn't rule out a Qpid-wide release.  There may be
reason for Qpid as a whole to share a release cadence and
produce a new distribution of components each cycle.  It would all
be more flexible, however.  A component might want to produce three
revisions in the space of a standard Qpid-wide four-month cycle, or a
component might produce no new revisions.

To me the advantage of producing a periodic distribution is (a)
coordinated testing and (b) a known distribution set for users to
deploy together.

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



Re: Modularizing Qpid

2013-04-10 Thread Rob Godfrey
I'm +1 this... Obviously we need to understand better the amount of work to
achieve the separation of the components... but if this were in place then
we wouldn't be facing the sort of issues we are currently experiencing with
the 0.22 release which would strongly benefit from not having the release
cycles of all components tied together.

-- Rob


On 10 April 2013 15:55, Justin Ross jr...@apache.org wrote:

 Hi, everyone.  We've recently been discussing the components of our
 project in a couple different contexts.  This is a proposal to take
 the outcomes of those discussion and apply them to how Qpid is
 organized.

 Thanks for taking a look,
 Justin

 ## Related discussions

  -
 http://qpid.2158936.n2.nabble.com/Proposal-to-adjust-our-source-tree-layout-td7587237.html
  - http://qpid.2158936.n2.nabble.com/Website-update-td7590445.html

 ## The problem

 For a long time, Qpid was in many respects treated as one thing, with
 one release cycle.  Its parts were divided at the top level by
 language, not function.

 The division by language provides little incentive to factor out
 dependencies into clean interfaces, and it has tended to mean that
 developers often work in just one language silo.

 It has also meant that our source modules have only a weak
 correspondence to the user-focused release artifacts that we produce.

 With Proton, we've broken the mold, and the overall picture of Qpid is
 inconsistent and confusing, to the Qpid developers and users.

 ## The proposed approach

  - Qpid the project embraces a functional division of components

  - Each source component is self-contained and independent, with a
focused purpose; among components, there are well defined
dependencies

  - The source components should correspond closely to the pieces our
users want to use independently; nonetheless, there would in some
cases be multiple release artifacts from a component

  - Each component has its own set of branches, supporting independent
releases

  - Each component should be neither too large nor too small; large
enough to ease development and release management; small enough to
represent a focused functional unit and to clarify dependencies

  - API components would in some cases also contain code shared by APIs
and servers; the server would in that case depend on the API code
base

 ## Proposed source components

  - Proton (this one already exists)
- /qpid/proton/trunk/

  - JMS
- /qpid/jms/trunk/
- Depends on Proton

  - Java broker
- /qpid/java-broker/trunk/
- Depends on JMS (?)

  - Messaging API
- /qpid/messaging-api/trunk/
- Both the C++ (and bindings) and python implementations would
  move here
- Depends on Proton

  - C++ broker
- /qpid/cpp-broker/trunk/
- Depends on Messaging-API

 Note that this matches the download page of the new website pretty
 nicely.

  - http://people.apache.org/~jross/transom/head/download.html

 There's some debate about the right names for these things.  Don't
 take my suggestions seriously.  I just had to put something down to
 illustrate.  If I had my druthers, we'd give the two brokers names
 that didn't include a programming language.

 ## First steps

 This change can't happen all at once.  We propose to start with these:

  - Isolate JMS from the existing qpid/trunk/qpid tree
  - Isolate the Messaging API from the existing qpid/trunk/qpid tree

 If this is agreed, the idea is to bite off this much during the 0.24
 cycle.

 ## Developer infrastructure

 This change calls for some work to support developers using multiple
 components in one development environment.  This needs more
 investigation.

 ## JIRA instances

 We propose *not* to create new jira instances for each component.  We
 can do that later on if necessary.  For now we can overload the
 version field in the qpid jira instance to include a component name.

 ## A Qpid distribution of source component releases

 While this scheme supports independent releases of each source
 component, it doesn't rule out a Qpid-wide release.  There may be
 reason for Qpid as a whole to share a release cadence and
 produce a new distribution of components each cycle.  It would all
 be more flexible, however.  A component might want to produce three
 revisions in the space of a standard Qpid-wide four-month cycle, or a
 component might produce no new revisions.

 To me the advantage of producing a periodic distribution is (a)
 coordinated testing and (b) a known distribution set for users to
 deploy together.

 -
 To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
 For additional commands, e-mail: dev-h...@qpid.apache.org




Re: Maybe bug, maybe novice mistake, or maybe my python qpid library is too old.

2013-04-10 Thread Ken Giusti
Good catch Bill - this is a bug, and I've entered a JIRA for it:

https://issues.apache.org/jira/browse/QPID-4732

That said, I would urge you not to use the QPID connection directly.  The API 
doesn't explicitly expose this, and we probably will be moving the QMF client 
to use the client messaging interface at some point (which will break what 
you're doing).

Instead, you should create a separate connection to the broker using the Qpid 
Messaging client API as described here:

http://qpid.apache.org/books/0.20/Programming-In-Apache-Qpid/html/index.html

-K


- Original Message -
 From: Bill Freeman ke1g...@gmail.com
 To: users users@qpid.apache.org
 Sent: Tuesday, April 9, 2013 5:56:34 PM
 Subject: Maybe bug, maybe novice mistake, or maybe my python qpid library is 
 too old.
 
 In my qmf.console based app, I was trying to figure out how to piggy-back
 my browsing of a queue
  on the existing broker's connection, using
 broker.conn.session('somename'), and while pdb was trying to print a stack
 trace, the __str__ method of the qpid.connection.Connection instance got
 called.  This does (at line 225 in my copy):
 
 return %s:%s % self.sock.getsockname()
 
 Now,  getsockname() returns:
 
 ('::1', 49845, 0, 0)
 
 So it's no wonder that pdb gets a:
 
 TypeError: not all arguments converted during string formatting
 
 I'm guessing that the code was written before getsockname() became IPv6
 aware?
 
 Bill
 

-- 
-K

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



Re: How to set ssl_keyfile and ssl_certfile for python tools (to c++ broker) from the command line?

2013-04-10 Thread Ken Giusti
Hi D James,

I'm pretty sure the ssl options were added to qpid-config _after_ 0.18.  I 
think they first appeared in the 0.20 release.

Does qpid-config --help list them?

-K

- Original Message -
 From: djames dpgja...@gmail.com
 To: users@qpid.apache.org
 Sent: Tuesday, April 9, 2013 5:41:35 PM
 Subject: How to set ssl_keyfile and  ssl_certfile for python tools (to c++ 
 broker) from the command line?
 
 I have been trying to do this for a few days. My python is not very strong.
 
 I have been trying combinations and permutions of:
 qpid-config -b amqps://localhost , ssl_certfile=/path/to/certfile,
 ssl_keyfile=/path/to/keyfile --sasl-mechanism='EXTERNAL'
 
 I am currently using qpid 0.18.
 
 An example from someone that knows what they are doing would be very
 welcome.
 
 D James
 
 
 
 
 --
 View this message in context:
 http://qpid.2158936.n2.nabble.com/How-to-set-ssl-keyfile-and-ssl-certfile-for-python-tools-to-c-broker-from-the-command-line-tp7591358.html
 Sent from the Apache Qpid users mailing list archive at Nabble.com.
 
 -
 To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
 For additional commands, e-mail: users-h...@qpid.apache.org
 
 

-- 
-K

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



Re: Maybe bug, maybe novice mistake, or maybe my python qpid library is too old.

2013-04-10 Thread Bill Freeman
Ken,


On Wed, Apr 10, 2013 at 10:56 AM, Ken Giusti kgiu...@redhat.com wrote:

 Good catch Bill - this is a bug, and I've entered a JIRA for it:

 https://issues.apache.org/jira/browse/QPID-4732

 That said, I would urge you not to use the QPID connection directly.  The
 API doesn't explicitly expose this, and we probably will be moving the QMF
 client to use the client messaging interface at some point (which will
 break what you're doing).

 Instead, you should create a separate connection to the broker using the
 Qpid Messaging client API as described here:


 http://qpid.apache.org/books/0.20/Programming-In-Apache-Qpid/html/index.html

 Yes, I have made it work with the Messaging API.

And although they both have objects called Connection and Session, I now
know that they are not the same.  (I certainly haven't found any
documentation for the low level API.)

It just seems a shame to have to open a second connection to the broker.



As long as I have your attention, does ;{mode:browse} affect the need to
acknowledge messages?

Thanks, Bill


Re: Modularizing Qpid

2013-04-10 Thread Rajith Attapattu
+1 on this.
Having the flexibility to have individual release cycles for each component
will be huge advantage for us.
However as Justin mentioned, we shouldn't rule out a Qpid wide release
perhaps once a year or so.
From a users perspective this is a great thing to have, bcos all the
components bundled under that release will be guaranteed to work well
together.

Rajith

On Wed, Apr 10, 2013 at 10:46 AM, Rob Godfrey rob.j.godf...@gmail.comwrote:

 I'm +1 this... Obviously we need to understand better the amount of work to
 achieve the separation of the components... but if this were in place then
 we wouldn't be facing the sort of issues we are currently experiencing with
 the 0.22 release which would strongly benefit from not having the release
 cycles of all components tied together.

 -- Rob


 On 10 April 2013 15:55, Justin Ross jr...@apache.org wrote:

  Hi, everyone.  We've recently been discussing the components of our
  project in a couple different contexts.  This is a proposal to take
  the outcomes of those discussion and apply them to how Qpid is
  organized.
 
  Thanks for taking a look,
  Justin
 
  ## Related discussions
 
   -
 
 http://qpid.2158936.n2.nabble.com/Proposal-to-adjust-our-source-tree-layout-td7587237.html
   - http://qpid.2158936.n2.nabble.com/Website-update-td7590445.html
 
  ## The problem
 
  For a long time, Qpid was in many respects treated as one thing, with
  one release cycle.  Its parts were divided at the top level by
  language, not function.
 
  The division by language provides little incentive to factor out
  dependencies into clean interfaces, and it has tended to mean that
  developers often work in just one language silo.
 
  It has also meant that our source modules have only a weak
  correspondence to the user-focused release artifacts that we produce.
 
  With Proton, we've broken the mold, and the overall picture of Qpid is
  inconsistent and confusing, to the Qpid developers and users.
 
  ## The proposed approach
 
   - Qpid the project embraces a functional division of components
 
   - Each source component is self-contained and independent, with a
 focused purpose; among components, there are well defined
 dependencies
 
   - The source components should correspond closely to the pieces our
 users want to use independently; nonetheless, there would in some
 cases be multiple release artifacts from a component
 
   - Each component has its own set of branches, supporting independent
 releases
 
   - Each component should be neither too large nor too small; large
 enough to ease development and release management; small enough to
 represent a focused functional unit and to clarify dependencies
 
   - API components would in some cases also contain code shared by APIs
 and servers; the server would in that case depend on the API code
 base
 
  ## Proposed source components
 
   - Proton (this one already exists)
 - /qpid/proton/trunk/
 
   - JMS
 - /qpid/jms/trunk/
 - Depends on Proton
 
   - Java broker
 - /qpid/java-broker/trunk/
 - Depends on JMS (?)
 
   - Messaging API
 - /qpid/messaging-api/trunk/
 - Both the C++ (and bindings) and python implementations would
   move here
 - Depends on Proton
 
   - C++ broker
 - /qpid/cpp-broker/trunk/
 - Depends on Messaging-API
 
  Note that this matches the download page of the new website pretty
  nicely.
 
   - http://people.apache.org/~jross/transom/head/download.html
 
  There's some debate about the right names for these things.  Don't
  take my suggestions seriously.  I just had to put something down to
  illustrate.  If I had my druthers, we'd give the two brokers names
  that didn't include a programming language.
 
  ## First steps
 
  This change can't happen all at once.  We propose to start with these:
 
   - Isolate JMS from the existing qpid/trunk/qpid tree
   - Isolate the Messaging API from the existing qpid/trunk/qpid tree
 
  If this is agreed, the idea is to bite off this much during the 0.24
  cycle.
 
  ## Developer infrastructure
 
  This change calls for some work to support developers using multiple
  components in one development environment.  This needs more
  investigation.
 
  ## JIRA instances
 
  We propose *not* to create new jira instances for each component.  We
  can do that later on if necessary.  For now we can overload the
  version field in the qpid jira instance to include a component name.
 
  ## A Qpid distribution of source component releases
 
  While this scheme supports independent releases of each source
  component, it doesn't rule out a Qpid-wide release.  There may be
  reason for Qpid as a whole to share a release cadence and
  produce a new distribution of components each cycle.  It would all
  be more flexible, however.  A component might want to produce three
  revisions in the space of a standard Qpid-wide four-month cycle, or a
  component might produce no new revisions.
 
  

Re: How to set ssl_keyfile and ssl_certfile for python tools (to c++ broker) from the command line?

2013-04-10 Thread Jakub Scholz
Hi Ken,

I don't know about the Qpid 0.18 release, but he might be using MRG-M 2.3
which reports it self as Qpid 0.18 and contains the SSL support in
qpid-config.

Regards
Jakub


On Wed, Apr 10, 2013 at 5:07 PM, Ken Giusti kgiu...@redhat.com wrote:

 Hi D James,

 I'm pretty sure the ssl options were added to qpid-config _after_ 0.18.  I
 think they first appeared in the 0.20 release.

 Does qpid-config --help list them?

 -K

 - Original Message -
  From: djames dpgja...@gmail.com
  To: users@qpid.apache.org
  Sent: Tuesday, April 9, 2013 5:41:35 PM
  Subject: How to set ssl_keyfile and  ssl_certfile for python tools (to
 c++ broker) from the command line?
 
  I have been trying to do this for a few days. My python is not very
 strong.
 
  I have been trying combinations and permutions of:
  qpid-config -b amqps://localhost , ssl_certfile=/path/to/certfile,
  ssl_keyfile=/path/to/keyfile --sasl-mechanism='EXTERNAL'
 
  I am currently using qpid 0.18.
 
  An example from someone that knows what they are doing would be very
  welcome.
 
  D James
 
 
 
 
  --
  View this message in context:
 
 http://qpid.2158936.n2.nabble.com/How-to-set-ssl-keyfile-and-ssl-certfile-for-python-tools-to-c-broker-from-the-command-line-tp7591358.html
  Sent from the Apache Qpid users mailing list archive at Nabble.com.
 
  -
  To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
  For additional commands, e-mail: users-h...@qpid.apache.org
 
 

 --
 -K

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




Re: Maybe bug, maybe novice mistake, or maybe my python qpid library is too old.

2013-04-10 Thread Ken Giusti

- Original Message -
 From: Bill Freeman ke1g...@gmail.com
 To: users users@qpid.apache.org
 Sent: Wednesday, April 10, 2013 11:23:04 AM
 Subject: Re: Maybe bug, maybe novice mistake, or maybe my python qpid library 
 is too old.
 
 Ken,
 

snip

 
 As long as I have your attention, does ;{mode:browse} affect the need to
 acknowledge messages?
 
 Thanks, Bill
 


Hi Bill - 

Since you are not transferring ownership of the message, ack'ing each message 
isn't strictly necessary.

However, I seem to recall that issuing an occasional ack could affect other 
aspects of the consumer, like replenishment of prefetch credit, or something 
else that may improve overall performance.

But I'm not the best person to ask - anyone else care to weigh in?

thanks,


-- 
-K

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



Re: Modularizing Qpid

2013-04-10 Thread Darryl L. Pierce
On Wed, Apr 10, 2013 at 09:55:22AM -0400, Justin Ross wrote:
 Hi, everyone.  We've recently been discussing the components of our
 project in a couple different contexts.  This is a proposal to take
 the outcomes of those discussion and apply them to how Qpid is
 organized.

+1

-- 
Darryl L. Pierce, Sr. Software Engineer @ Red Hat, Inc.
Delivering value year after year.
Red Hat ranks #1 in value among software vendors.
http://www.redhat.com/promo/vendor/



pgprXkHaxemiW.pgp
Description: PGP signature


Re: Modularizing Qpid

2013-04-10 Thread Robbie Gemmell
+1 from me as well. I think this would be a good improvement on the
existing structure and benefit everyone by allowing for schedules more
tailored to the specific components, and in turn enable us to better meet
the needs of their users.

We would need to investigate how some of the changes might best be
achieved, and thus better understand how much effort is likely to be
involved as Rob mentioned. I think it is at least somewhat likely it would
be easier to do the JMS clients and the Java broker at the same time rather
than separately for example, but we would need to examine the options to be
sure.

Robbie

On 10 April 2013 15:46, Rob Godfrey rob.j.godf...@gmail.com wrote:

 I'm +1 this... Obviously we need to understand better the amount of work to
 achieve the separation of the components... but if this were in place then
 we wouldn't be facing the sort of issues we are currently experiencing with
 the 0.22 release which would strongly benefit from not having the release
 cycles of all components tied together.

 -- Rob


 On 10 April 2013 15:55, Justin Ross jr...@apache.org wrote:

  Hi, everyone.  We've recently been discussing the components of our
  project in a couple different contexts.  This is a proposal to take
  the outcomes of those discussion and apply them to how Qpid is
  organized.
 
  Thanks for taking a look,
  Justin
 
  ## Related discussions
 
   -
 
 http://qpid.2158936.n2.nabble.com/Proposal-to-adjust-our-source-tree-layout-td7587237.html
   - http://qpid.2158936.n2.nabble.com/Website-update-td7590445.html
 
  ## The problem
 
  For a long time, Qpid was in many respects treated as one thing, with
  one release cycle.  Its parts were divided at the top level by
  language, not function.
 
  The division by language provides little incentive to factor out
  dependencies into clean interfaces, and it has tended to mean that
  developers often work in just one language silo.
 
  It has also meant that our source modules have only a weak
  correspondence to the user-focused release artifacts that we produce.
 
  With Proton, we've broken the mold, and the overall picture of Qpid is
  inconsistent and confusing, to the Qpid developers and users.
 
  ## The proposed approach
 
   - Qpid the project embraces a functional division of components
 
   - Each source component is self-contained and independent, with a
 focused purpose; among components, there are well defined
 dependencies
 
   - The source components should correspond closely to the pieces our
 users want to use independently; nonetheless, there would in some
 cases be multiple release artifacts from a component
 
   - Each component has its own set of branches, supporting independent
 releases
 
   - Each component should be neither too large nor too small; large
 enough to ease development and release management; small enough to
 represent a focused functional unit and to clarify dependencies
 
   - API components would in some cases also contain code shared by APIs
 and servers; the server would in that case depend on the API code
 base
 
  ## Proposed source components
 
   - Proton (this one already exists)
 - /qpid/proton/trunk/
 
   - JMS
 - /qpid/jms/trunk/
 - Depends on Proton
 
   - Java broker
 - /qpid/java-broker/trunk/
 - Depends on JMS (?)
 
   - Messaging API
 - /qpid/messaging-api/trunk/
 - Both the C++ (and bindings) and python implementations would
   move here
 - Depends on Proton
 
   - C++ broker
 - /qpid/cpp-broker/trunk/
 - Depends on Messaging-API
 
  Note that this matches the download page of the new website pretty
  nicely.
 
   - http://people.apache.org/~jross/transom/head/download.html
 
  There's some debate about the right names for these things.  Don't
  take my suggestions seriously.  I just had to put something down to
  illustrate.  If I had my druthers, we'd give the two brokers names
  that didn't include a programming language.
 
  ## First steps
 
  This change can't happen all at once.  We propose to start with these:
 
   - Isolate JMS from the existing qpid/trunk/qpid tree
   - Isolate the Messaging API from the existing qpid/trunk/qpid tree
 
  If this is agreed, the idea is to bite off this much during the 0.24
  cycle.
 
  ## Developer infrastructure
 
  This change calls for some work to support developers using multiple
  components in one development environment.  This needs more
  investigation.
 
  ## JIRA instances
 
  We propose *not* to create new jira instances for each component.  We
  can do that later on if necessary.  For now we can overload the
  version field in the qpid jira instance to include a component name.
 
  ## A Qpid distribution of source component releases
 
  While this scheme supports independent releases of each source
  component, it doesn't rule out a Qpid-wide release.  There may be
  reason for Qpid as a whole to share a release cadence and
  produce a new 

Re: Maybe bug, maybe novice mistake, or maybe my python qpid library is too old.

2013-04-10 Thread Bill Freeman
On Wed, Apr 10, 2013 at 12:42 PM, Ken Giusti kgiu...@redhat.com wrote:


 - Original Message -
  From: Bill Freeman ke1g...@gmail.com
  To: users users@qpid.apache.org
  Sent: Wednesday, April 10, 2013 11:23:04 AM
  Subject: Re: Maybe bug, maybe novice mistake, or maybe my python qpid
 library is too old.
 
  Ken,
 

 snip

 
  As long as I have your attention, does ;{mode:browse} affect the need to
  acknowledge messages?
 
  Thanks, Bill
 


 Hi Bill -

 Since you are not transferring ownership of the message, ack'ing each
 message isn't strictly necessary.

 However, I seem to recall that issuing an occasional ack could affect
 other aspects of the consumer, like replenishment of prefetch credit, or
 something else that may improve overall performance.

 But I'm not the best person to ask - anyone else care to weigh in?

 thanks,


I thought I saw somewhere in the code that there is a list of unacked
messages in the python client library, and things go there without any kind
of check, that I could see, as to whether they were a browse.  So it might
be that the broker doesn't need it, but that it consumes memory in the
client.  Of course I can't remember whether I saw that in the low level or
the messaging layer code.

If the broker doesn't need it, it's a pity to waste the bandwidth sending
the ack, assuming that client doesn't figure out that the ack isn't needed,
and quash it.

Bill


Re: Modularizing Qpid

2013-04-10 Thread Jakub Scholz
From a user point of view ... if the client libraries have independent
releases, it might be more clear to many people that they do not need to
use exactly the same version of the client library as is the broker
version. That seems to be quite popular believe among the people connecting
to our brokers. I hope the new website will help a bit with this as well.
Similarly, it might also clear a few misunderstandings that the Java broker
and the C++ broker are fully identical in terms of features /
functionality, just written in different language.

Regards
Jakub


On Wed, Apr 10, 2013 at 3:55 PM, Justin Ross jr...@apache.org wrote:

 Hi, everyone.  We've recently been discussing the components of our
 project in a couple different contexts.  This is a proposal to take
 the outcomes of those discussion and apply them to how Qpid is
 organized.

 Thanks for taking a look,
 Justin

 ## Related discussions

  -
 http://qpid.2158936.n2.nabble.com/Proposal-to-adjust-our-source-tree-layout-td7587237.html
  - http://qpid.2158936.n2.nabble.com/Website-update-td7590445.html

 ## The problem

 For a long time, Qpid was in many respects treated as one thing, with
 one release cycle.  Its parts were divided at the top level by
 language, not function.

 The division by language provides little incentive to factor out
 dependencies into clean interfaces, and it has tended to mean that
 developers often work in just one language silo.

 It has also meant that our source modules have only a weak
 correspondence to the user-focused release artifacts that we produce.

 With Proton, we've broken the mold, and the overall picture of Qpid is
 inconsistent and confusing, to the Qpid developers and users.

 ## The proposed approach

  - Qpid the project embraces a functional division of components

  - Each source component is self-contained and independent, with a
focused purpose; among components, there are well defined
dependencies

  - The source components should correspond closely to the pieces our
users want to use independently; nonetheless, there would in some
cases be multiple release artifacts from a component

  - Each component has its own set of branches, supporting independent
releases

  - Each component should be neither too large nor too small; large
enough to ease development and release management; small enough to
represent a focused functional unit and to clarify dependencies

  - API components would in some cases also contain code shared by APIs
and servers; the server would in that case depend on the API code
base

 ## Proposed source components

  - Proton (this one already exists)
- /qpid/proton/trunk/

  - JMS
- /qpid/jms/trunk/
- Depends on Proton

  - Java broker
- /qpid/java-broker/trunk/
- Depends on JMS (?)

  - Messaging API
- /qpid/messaging-api/trunk/
- Both the C++ (and bindings) and python implementations would
  move here
- Depends on Proton

  - C++ broker
- /qpid/cpp-broker/trunk/
- Depends on Messaging-API

 Note that this matches the download page of the new website pretty
 nicely.

  - http://people.apache.org/~jross/transom/head/download.html

 There's some debate about the right names for these things.  Don't
 take my suggestions seriously.  I just had to put something down to
 illustrate.  If I had my druthers, we'd give the two brokers names
 that didn't include a programming language.

 ## First steps

 This change can't happen all at once.  We propose to start with these:

  - Isolate JMS from the existing qpid/trunk/qpid tree
  - Isolate the Messaging API from the existing qpid/trunk/qpid tree

 If this is agreed, the idea is to bite off this much during the 0.24
 cycle.

 ## Developer infrastructure

 This change calls for some work to support developers using multiple
 components in one development environment.  This needs more
 investigation.

 ## JIRA instances

 We propose *not* to create new jira instances for each component.  We
 can do that later on if necessary.  For now we can overload the
 version field in the qpid jira instance to include a component name.

 ## A Qpid distribution of source component releases

 While this scheme supports independent releases of each source
 component, it doesn't rule out a Qpid-wide release.  There may be
 reason for Qpid as a whole to share a release cadence and
 produce a new distribution of components each cycle.  It would all
 be more flexible, however.  A component might want to produce three
 revisions in the space of a standard Qpid-wide four-month cycle, or a
 component might produce no new revisions.

 To me the advantage of producing a periodic distribution is (a)
 coordinated testing and (b) a known distribution set for users to
 deploy together.

 -
 To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
 For additional commands, e-mail: dev-h...@qpid.apache.org