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 2017/03/06 13:07:32 UTC

[jira] [Commented] (QPID-7692) [0-8..0-91] Message sent to fanout exchange with no routing key is not delivered to application

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

Keith Wall commented on QPID-7692:
----------------------------------

The problem occurs because, on receipt, the message carries JMS_QPID_DESTTYPE = 2  which signifies topic.  This causes the client to assume that the exchange's class is topic. AMQTopic's constructor enforces that a routing key is present.   To fix, the client needs to be able to determine the class of the exchange so it can create a less stringent address object. 

> [0-8..0-91]  Message sent to fanout exchange with no routing key is not delivered to application
> ------------------------------------------------------------------------------------------------
>
>                 Key: QPID-7692
>                 URL: https://issues.apache.org/jira/browse/QPID-7692
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Client
>            Reporter: Keith Wall
>
> If I publish a message to the fanout exchange with no routing key, then receive the same message, the client logs an error and the application fails to receive the message both otherwise continues.  The problem only occurs on the 0-8..0-91 code path and then only if the client is in BURL default address syntax.
> Example publish address that causes the problem:
> {noformat}
> destination.pub = ADDR: myfanout; {create :always, node: {type: topic, x-declare: { type: fanout}}}
> {noformat}
> The problem does not occur if a subject is used e.g. myfanout/myfanout; ... or if the address does not include the _options_ part.
> {noformat}
> 12:37:40.195 [Dispatcher-2-Conn-2] ERROR o.a.qpid.client.BasicMessageConsumer - Caught exception (dump follows) - ignoring...
> java.lang.IllegalArgumentException: routing/binding key  must not be null
> 	at org.apache.qpid.client.AMQDestination.<init>(AMQDestination.java:379) ~[qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.AMQDestination.<init>(AMQDestination.java:369) ~[qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.AMQDestination.<init>(AMQDestination.java:363) ~[qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.AMQTopic.<init>(AMQTopic.java:66) ~[qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.AMQSession_0_8$TopicDestinationCache.newDestination(AMQSession_0_8.java:1528) ~[qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.AMQSession_0_8$TopicDestinationCache.newDestination(AMQSession_0_8.java:1524) ~[qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.AMQSession_0_8$DestinationCache.getDestination(AMQSession_0_8.java:1515) ~[qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.message.AMQMessageDelegate_0_8.<init>(AMQMessageDelegate_0_8.java:127) ~[qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.message.AbstractJMSMessageFactory.create08MessageWithBody(AbstractJMSMessageFactory.java:122) ~[qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.message.AbstractJMSMessageFactory.createMessage(AbstractJMSMessageFactory.java:188) ~[qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.message.MessageFactoryRegistry.createMessage(MessageFactoryRegistry.java:126) ~[qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.BasicMessageConsumer_0_8.createJMSMessageFromUnprocessedMessage(BasicMessageConsumer_0_8.java:156) ~[qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.BasicMessageConsumer_0_8.createJMSMessageFromUnprocessedMessage(BasicMessageConsumer_0_8.java:47) ~[qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.BasicMessageConsumer.notifyMessage(BasicMessageConsumer.java:726) ~[qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.AMQSession$Dispatcher.notifyConsumer(AMQSession.java:3662) [qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.AMQSession$Dispatcher.dispatchMessage(AMQSession.java:3594) [qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.AMQSession$Dispatcher.access$1300(AMQSession.java:3362) [qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.AMQSession.dispatch(AMQSession.java:3355) [qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.message.UnprocessedMessage.dispatch(UnprocessedMessage.java:54) [qpid-client-6.1.1.jar:6.1.1]
> 	at org.apache.qpid.client.AMQSession$Dispatcher.run(AMQSession.java:3504) [qpid-client-6.1.1.jar:6.1.1]
> 	at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

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