You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Keith Wall (JIRA)" <ji...@apache.org> on 2014/01/05 20:30:50 UTC
[jira] [Commented] (QPID-5420) Creating consumer for Destination
specifying the no-name exchange in binding url syntax fails against Java
Broker.
[ https://issues.apache.org/jira/browse/QPID-5420?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13862637#comment-13862637 ]
Keith Wall commented on QPID-5420:
----------------------------------
I've taken a closer look at this defect. I can see that the behaviour when publishing/consuming using a BURL specifying the default exchange has changed a number of times over recent releases. I've summarised the behaviour in the table below:
||release||system property qpid.declare_exchanges||0-10||0-9||
|trunk|true| fails *1 | fails *1|
|trunk|false| functions #2 |fails *3 |
|0.24|true| fails *1 | fails *1 |
|0.24|false| functions #2 | fails *3 |
|0.22|true| fails *2 | functions #1 |
|0.20|true|fails *2 | functions #1 |
|0.18|true| fails *2 | functions #1 |
*1 = Fails, Attempt to declare exchange: which begins with reserved name or prefix.
*2 = Fails, Bind not allowed for default exchange
*3 = Fails, Error sending exchange bound, (broker fails with "Exchange exchange must not be null" and closes connection).
#1 = Functions, but received message has JMSDestination = direct://<<default>>/myqueue/myqueue?routingkey='my queue'
#2 = Functions, but received message has JMSDestination = :///myqueue/myqueue?routingkey='my queue'
In other words, for 0-9:
* Publishing/consuming with BURL with default exchange worked <= 0.22.
* At 0.24/trunk, QPID-4897 changed the client to send exchange.bound, but unfortunately, the Java Broker (0-8..0-9-1 path fails with a NPE (ExchangeBoundHandler.java) if exchange.bound queries the default exchange (error - *3). Also QPID-4973, changed the Broker (AbstractVirtualHost.java) to mean that attempts to actively declare the default exchange fail (error - *1)
For 0-10:
* Publishing/consuming with BURL with default exchange failed <= 0.22 (error - *2).
* At 0.24/trunk changes to client ( QPID-4897) means that client no longer tries to bind to the default exchange, so Publishing/consuming with BURL with default exchange works if qpid.declare_exchanges is false. If qpid.declare_exchanges is true, like 0-9, it fails (error - *1)
> Creating consumer for Destination specifying the no-name exchange in binding url syntax fails against Java Broker.
> ------------------------------------------------------------------------------------------------------------------
>
> Key: QPID-5420
> URL: https://issues.apache.org/jira/browse/QPID-5420
> Project: Qpid
> Issue Type: Bug
> Components: Java Broker, Java Client
> Affects Versions: 0.24, 0.26, 0.27
> Reporter: Keith Wall
> Attachments: 0001-QPID-5420-WIP-Proposed-fix-tests.patch
>
>
> If when using the Java Broker, I try to consume from a Destination specified by a binding url, where the exchange part is empty (signifying the no-name exchange)
> {noformat}
> destination.sub1 = direct:////sub1?durable='true'
> {noformat}
> , then I see an exception:
> On the client I see the following as the Java Broker closes the connection:
> {noformat}
> org.apache.qpid.AMQDisconnectedException: Server closed connection and reconnection not permitted.
> {noformat}
> On the broker, I see the following logged:
> {noformat}
> 2013-12-13 10:05:43,602 ERROR [IoReceiver - /127.0.0.1:49532] (v0_8.AMQProtocolEngine) - Unexpected exception while processing frame. Closing connection.
> org.apache.qpid.AMQException: Exchange exchange must not be null
> at org.apache.qpid.server.protocol.v0_8.handler.ExchangeBoundHandler.methodReceived(ExchangeBoundHandler.java:89)
> at org.apache.qpid.server.protocol.v0_8.handler.ServerMethodDispatcherImpl.dispatchExchangeBound(ServerMethodDispatcherImpl.java:458)
> at org.apache.qpid.framing.amqp_0_9.ExchangeBoundBodyImpl.execute(ExchangeBoundBodyImpl.java:130)
> at org.apache.qpid.server.protocol.v0_8.state.AMQStateManager.methodReceived(AMQStateManager.java:120)
> at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.methodFrameReceived(AMQProtocolEngine.java:578)
> at org.apache.qpid.framing.AMQMethodBodyImpl.handle(AMQMethodBodyImpl.java:97)
> at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.frameReceived(AMQProtocolEngine.java:442)
> at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.dataBlockReceived(AMQProtocolEngine.java:365)
> at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.received(AMQProtocolEngine.java:286)
> at org.apache.qpid.server.protocol.v0_8.AMQProtocolEngine.received(AMQProtocolEngine.java:104)
> at org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:131)
> at org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:47)
> at org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:161)
> at java.lang.Thread.run(Thread.java:744)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org