On Mon, 12 Jul 2021 at 15:40, Fraser Adams
<fraser.ad...@blueyonder.co.uk.invalid> wrote:
>
> Thanks Rob, so the bottom line then is that the Qpid Java broker *is*
> closing the connection in addition to the channel, right?
>

It may be, though I'm not sure what's been said actually proves that,
or if it is then precisely why.

In particular your note of the eventual error indicating 'channel 2
not existing' would to me as much potentially imply that something was
still trying to use channel 2 at a point it shouldnt, which could seem
peculiar given it was always expected to be closed immediately. Do you
recreate it?

> If that's the case at least that's reassuring in that it's doing what
> it's _supposed_ to be doing (even if that may not be quite "correct"). I
> was mainly concerned that I may have been misunderstanding something or
> doing something dumb/wrong myself, it was driving me slightly mad over
> the weekend . If it's just "a quirk" I can probably live with it.
>
> Another couple of questions:
>
> 1. I don't suppose you know of any simple way I could "detect" if I'm
> connecting to Qpid vice RabbitMQ from any of the connection/channel
> responses. I'm guessing probably not, but it might be nice to avoid
> creating that extra connection if there's a cheap and simple way to do
> it, but not worth bothering if I need to go through hoops to work out
> what I'm connecting to.
>

The broker adds its name in the connection properties during
opening...though that isnt to say you can actually inspect them using
the client.

> 2. My (very superficial) initial experiments seemed to indicate that the
> throughput of my application was a little slower with the Qpid Java
> broker than RabbitMQ. It was a fairly basic producer/consumer example
> just using the direct exchange and publishing 5K payloads. In all
> honesty I've not dug deeply as I was initially focussed on "just getting
> it to work" and for simplicity I just used this docker image
> abh1sh3k/apache-qpid.

Seems to be using 6.0.4, which just turned 5 years old. Might be worth
trying something newer. Setup is essentially extracting the archive,
optionally set QPID_WORK env variable.

>The config was pretty much the default for that
> image apart from the "secureOnlyMechanisms" : [ ],. I don't suppose you
> have any experience of comparing the two brokers and where one might
> outperform the other? The difference wasn't huge, though weirdly my
> Python client seemed to be using more CPU with the Java broker.
>
> 3. Is there an "official" Docker image for the Java broker? There was
> some talk of Qpid on Docker some time ago and Irina has some images
> here: https://hub.docker.com/u/irinabov, but those were last updated 4
> years ago and relate to the c++ broker and dispatch.
>

There is not.


> Thanks again for the reply!
>
> F.
>
> On 12/07/2021 14:48, Rob Godfrey wrote:
> > So, according to the 0-9-1 definition (
> > https://www.amqp.org/specification/0-9-1/amqp-org-download), 404 is
> > supposed to be a channel error - so RabbitMQ is likely more correct than
> > the Java Broker.  IIRC there were a whole boatload of issues with clients
> > (particularly the old JMS client) trying to handle channel level
> > exceptions, so the decision was made to just treat everything as a
> > connection level exception.  Others may have a more accurate/detailed
> > memory.
> >
> > -- Rob
> >
> > On Mon, 12 Jul 2021 at 14:31, Fraser Adams
> > <fraser.ad...@blueyonder.co.uk.invalid> wrote:
> >
> >> For context I'm working on a project that is primarily using the
> >> RabbitMQ broker and using the Pika Python client library. As the Qpid
> >> Java broker supports AMQP 0.9.1 too I figured I'd try to connect to that
> >> too to see if I could compare relative performance.
> >>
> >> I ran into a couple of issues, the first is that by default the Java
> >> broker doesn't support PLAIN authentication on insecure transports so I
> >> needed to mod the config.json to add
> >>
> >> "secureOnlyMechanisms" : [ ],
> >>
> >> to "authenticationproviders"
> >>
> >> I thought/hoped that'd be enough, but unfortunately things kept failing
> >> with a 504 error complaining about channel :2 not existing
> >>
> >>
> >> As it happens, what I'm actually doing during the startup of my
> >> application is to check if an exchange with the name of the specified
> >> destination exists.
> >>
> >> The way I do that is to do an exchange_declare with passive=True. Now I
> >> know that when an exception/error occurs (e.g. a 404 NOT_FOUND) if the
> >> exchange doesn't exist then the channel is closed by the broker. To
> >> cater for this I create a temporary channel (in this case it would be
> >> channel :2) and call the exchange_declare passive=True using that
> >> channel and I get a pika.exceptions.ChannelClosedByBroker, which is what
> >> I'd expect.
> >>
> >> So that's how it is with RabbitMQ broker, but with Qpid Java subsequent
> >> things were failing and I narrowed it down to the connection having been
> >> closed in addition to the channel.
> >>
> >> I've tried creating an additional temporary *connection* in addition to
> >> the temporary channel that I was previously creating in order to run the
> >> passive=True exchange_declare and doing that seems to "work" in terms of
> >> the rest of the application now seems to carry on correctly.
> >>
> >>
> >> So really I'm curious, is the Qpid Java broker closing the connection in
> >> addition to closing the channel the expected behaviour in this scenario?
> >> It is certainly different compared with what RabbitMQ does, but I have
> >> no idea what the "correct" behaviour is in this circumstance.
> >>
> >> MTIA
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
> >> For additional commands, e-mail: users-h...@qpid.apache.org
> >>
> >>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
> For additional commands, e-mail: users-h...@qpid.apache.org
>

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

Reply via email to