Hi,
I have understood that the subscriprion to a topic of a jms consumer must be 
durable, and that is probably the reason of my previous problem of loss of 
messages.

I have to realize a publish subscribe and I used some jms consumers and one 
provider in my configuration. The comunication must be many-to-many.
So all my POJOs send 1 message and every POJO must receive a copy of the 
message sent by the others and by itself.
( the configuration file is copied at the end )
The problem was that messages get lost.

I have seen with the debug modality of log4j of the activemq
that every single jms consumer appear and desappear so if some one send a 
message even on a single consumer, in the moment it disappear, the consumer 
never receive that.
( I tried using jconsole and saw how the topic doesn't deliver the message to 
the consumer )

So I think the problem is the durability of
the subscription of the consumer to the topic.

I did understand well the problem?

If the answer is yes, can somebody please tell me how to set the appropriate 
configuration?

here is my configuration:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:jms="http://servicemix.apache.org/jms/1.0";
       xmlns:esb="http://esbinaction.com/examples";>

  <jms:consumer service="esb:simpleConsumer1"
       endpoint="simpleEndpoint1"
           targetService="esb:simpleComponent1"
           targetEndpoint="simpleEndpoint1"
       destinationName="simple.input1"
       connectionFactory="#connectionFactory"/>

  <jms:consumer service="esb:simpleConsumer2"
       endpoint="simpleEndpoint2"
           targetService="esb:simpleComponent2"
           targetEndpoint="simpleEndpoint2"
       destinationName="simple.input2"
       connectionFactory="#connectionFactory"/>

  <jms:consumer service="esb:simpleConsumer3"
       endpoint="simpleEndpoint3"
           targetService="esb:simpleComponent3"
           targetEndpoint="simpleEndpoint3"
       destinationName="simple.input3"
       connectionFactory="#connectionFactory"/>

  <jms:provider service="esb:ServizioProvider"
       endpoint="endpointProvider"
         pubSubDomain="true"
       destinationName="topic1"
       connectionFactory="#connectionFactory" />

 <jms:consumer service="esb:ServizioConsumer1"
       endpoint="eC1"
       targetService="esb:simpleComponent1"                            
       targetEndpoint="eC1"
         pubSubDomain="true"
       destinationName="topic1"
       connectionFactory="#connectionFactory" />

  <jms:consumer service="esb:ServizioConsumer2"
       endpoint="eC2"
       targetService="esb:simpleComponent2"                            
       targetEndpoint="eC2"
         pubSubDomain="true"
       destinationName="topic1"
       connectionFactory="#connectionFactory" />

  <jms:consumer service="esb:ServizioConsumer3"
       endpoint="eC3"
       targetService="esb:simpleComponent3"                            
       targetEndpoint="eC3"
         pubSubDomain="true"
       destinationName="topic1"
       connectionFactory="#connectionFactory" />

  <jms:consumer service="esb:springConsumer"
           endpoint="simpleSpringEndpoint"
       targetService="esb:simpleSpringComponent"
       destinationName="simpleSpring.input"
       connectionFactory="#connectionFactory"/>

  <bean id="connectionFactory" 
class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="tcp://localhost:61616" />
  </bean>

</beans>

Thank you in advance for your answers.
Greetings,
Silvia

Reply via email to