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

Robbie Gemmell commented on QPID-2482:
--------------------------------------

I too looked at the code and didnt see how this could occur on the Java broker, 
and having tried the example was not able to reproduce any problem with the 
example.

There are 4 queues created by the TopicListener in the example, bound to 
amp.topic with a specific binding key:
listener.prepareQueue(session,"usa", "usa.#");
listener.prepareQueue(session,"europe", "europe.#");
listener.prepareQueue(session,"news", "#.news");
listener.prepareQueue(session,"weather", "#.weather");
 
The TopicPublisher in the example then sends 4 sets of messages whereby the 
topic each message is sent to matches exactly two of the bindings for the 4 
queues above, eg 'usa.#' and '#.news' in the first set of messages sent:
publisher.publishMessages(session, "usa.news");
publisher.publishMessages(session, "usa.weather");
publisher.publishMessages(session, "europe.news");
publisher.publishMessages(session, "europe.weather");

The log output from the listener shows it recieving twice as many times as 
there are messages sent, reflecting that 2 queues match each message and sent. 
I dont see any indication that the same queue recieved the same message twice.

 


> Topic Exchange can duplicate messages.
> --------------------------------------
>
>                 Key: QPID-2482
>                 URL: https://issues.apache.org/jira/browse/QPID-2482
>             Project: Qpid
>          Issue Type: Bug
>          Components: C++ Broker
>         Environment: Linux
>            Reporter: Ken Giusti
>            Assignee: Ken Giusti
>
> As per Gordon's description:
> If a given queue is bound to a topic exchange with multiple bindings, a 
> message sent to that exchange will result in a copy being enqueued for each 
> binding that matches. This is incorrect - each message should be enqueued 
> once if there is any binding to the queue that matches it.
> Steps to Reproduce:
> 1. create queue
> 2. bind it to amq.topic with two distinct bindings (e.g. red.* and *.herring)
> 3. send amq.topic a message whose routing key matches both patterns (e.g. 
> "red.herring")
> 4. check the queue
> Actual results:
> The message is enqueued on the queue twice.
> Expected results:
> The message should only be enqueued on the queue once.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://issues.apache.org/jira/secure/Administrators.jspa
-
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

Reply via email to