[ 
https://issues.apache.org/activemq/browse/AMQ-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hadrian Zbarcea updated AMQ-2561:
---------------------------------

    Fix Version/s: 5.4.1
                       (was: 5.4.0)

> Subscriber receives messages that sent by itself even if noLocal is true.
> -------------------------------------------------------------------------
>
>                 Key: AMQ-2561
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2561
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.2.0
>            Reporter: SuoNayi Wang
>            Assignee: Rob Davies
>             Fix For: 5.4.1
>
>         Attachments: Producer.java
>
>
> 1, use org.springframework.jms.connection.SingleConnectionFactory to wrap 
> org.apache.activemq.spring.ActiveMQConnectionFactory so that we only use 
> single connection.
> 2, use org.springframework.jms.core.JmsTemplate to send a simple text message.
> 3, use org.springframework.jms.listener.DefaultMessageListenerContainer to 
> receive message,
>       <bean id="defaultMessageListenerContainer" 
> class="org.springframework.jms.listener.DefaultMessageListenerContainer">
>               <property name="connectionFactory" ref="connectionFactory"/>
>               <property name="sessionTransacted" value="true"/>
>               <property name="pubSubDomain" value="true"/>
>               <property name="pubSubNoLocal" value="true"/>
>               <property name="destination" ref="topicDestination"/>
>               <property name="subscriptionDurable" value="true"/>
>               <property name="durableSubscriptionName" value="bus.topic"/>
>               <property name="messageListener">
>                       <bean 
> class="com.sinosoft.activemq.listener.DefaultMessageListener"/>
>               </property>
>       </bean>
> 4, messageListener receive messages sent by itself.
> Also,to reproduce:
> package test;
> import javax.jms.Connection;
> import javax.jms.ConnectionFactory;
> import javax.jms.Message;
> import javax.jms.MessageListener;
> import javax.jms.MessageProducer;
> import javax.jms.Session;
> import javax.jms.TextMessage;
> import javax.jms.Topic;
> import javax.jms.TopicSubscriber;
> import org.apache.activemq.ActiveMQConnectionFactory;
> import org.apache.activemq.command.ActiveMQTopic;
> public final class Producer implements MessageListener{
>     private Producer() {
>     }
>     public static void main(String[] args) {
>         String url = "failover:(tcp://172.31.0.82:61610)";
>         ConnectionFactory connectionFactory = new 
> ActiveMQConnectionFactory(url);
>         Topic destination = new ActiveMQTopic("bus.topic");
>         
>         Connection connection = null;
>         try{
>               connection = connectionFactory.createConnection();
>               connection.setClientID("112234");
>               
>               Session session = connection.createSession(false, 
> Session.AUTO_ACKNOWLEDGE);
>               
>               TopicSubscriber subscriber = 
> session.createDurableSubscriber(destination, "topicUser2", null, true);
>               System.out.println(subscriber + " getNoLocal()= " + 
> subscriber.getNoLocal());
>               Producer listener = new Producer();
>               subscriber.setMessageListener(listener);
>               
>               connection.start();
>               
>               MessageProducer producer = session.createProducer(destination);
>               TextMessage message = session.createTextMessage("THIS IS A 
> TEST");
>               producer.send(message);
>               producer.close();
>               System.out.println("Send a message " + message);
>         }catch(Exception e){
>               e.printStackTrace();
>         }
>     }
>       public void onMessage(Message msg){
>               System.out.println("Receive a message " + msg);
>       }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to