activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Tully <gary.tu...@gmail.com>
Subject Re: Messages not getting persisted while the JMS broker restart
Date Fri, 07 May 2010 12:58:25 GMT
You need to use a durable consumer, see:
http://activemq.apache.org/how-do-durable-queues-and-topics-work.html

On 7 May 2010 13:40, usha Kanteti <u_kanteti@yahoo.com> wrote:

>
>  HI,
>  I am newbi to JMS and here is the trouble that I see.
>
>  1) I started the jms broker and producer and my producer code produced 10
>  messages to the topic   "myTopic". I see these messages in jconsole with
>  EnqueueCount=10 in "myTopic"
>  2) I didn't configure any consumers for this topic  "myTopic"
>  2) Now I stopped the jms broker and producer
>  3) restarted the jms broker and producer and started producing another 10
>  messages to the same topic
>  4) Now if I see  EnqueueCount on this topic "myTopic", it is still showing
>  10 but I am thinking, it should be 20 (10 previous ones + 10 current) as
>  they have not been consumed.
>
>  Now my question is are these messages persisted while the jms broker
>  restart.
>
>  I use camel activemq and here is my code snippet
>
>  ######### JMSSERVER Broker
>  public class ConfigureJMSServer {
>
>         Logger logger = Logger.getLogger(ConfigureJMSServer.class);
>         private static final String jmsServerUrl="tcp://localhost:61616";
>         public void startServer() {
>
>                 try {
>                         BrokerService broker = new BrokerService();
>                         // configure the broker
>                         broker.addConnector(jmsServerUrl);
>                         broker.setPersistent(true);
>                         broker.start();
>                 } catch (Exception e) {
>                         logger.info("##### Unable to start JMS Server");
>
>                 }
>
>  ##############################################
>
>  ######### ActiveMQProducer
>  public class ActiveMQProducer {
>
>   private Connection connection;
>   private Session session;
>   private MessageProducer producer;
>   private MessageConsumer consumer;
>
>   public void init() throws Exception {
>     ActiveMQConnectionFactory connectionFactory =
>       new ActiveMQConnectionFactory("tcp://localhost:61616");
>     connection = connectionFactory.createConnection();
>     session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
>     Topic request = session.createTopic("myTopic");
>     // and attach a consumer and producer to them
>     producer = session.createProducer(request);
>     producer.setDeliveryMode(DeliveryMode.PERSISTENT);
>     // and start your engines...
>     connection.start();
>   }
>
>
>
>   public void sendMessage(String messageText) throws Exception {
>    producer.send(session.createTextMessage(messageText));
>   }
>
>   public void produce() throws Exception {
>           this.init();
>           for (int i=0; i < 10; i++ ) {
>                   this.sendMessage("TEST TEST TEST");
>           }
>          // this.destroy();
>   }
>
>  ############################################################
>  my camel configuration
>  #####################################################
>
>  <!-- Bean Declarations  -->
>     <bean id="configureJMSServer" class="jmsserver.ConfigureJMSServer"/>
>     <bean id="jmsProducer" class="jmsserver.ActiveMQProducer"/>
>
>
>         <bean id="jmsConnectionFactory"
>  class="org.apache.activemq.ActiveMQConnectionFactory">
>         <property name="brokerURL"
>  value="tcp://localhost:61616?jms.redeliveryPolicy.maximumRedeliveries=-1"
> />
>         </bean>
>
>
>        <bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
>                <property name="connectionFactory"
>  ref="jmsConnectionFactory" />
>                 <property name="useMessageIDAsCorrelationID" value="true"
> />
>
>         </bean>
>
>
>         <camelContext xmlns="http://camel.apache.org/schema/spring">
>                 <package>Start JMS Server</package>
>
>
>                 <route>
>                         <!--  just a fake route to start the JMS server -->
>                       <from
>
> uri="file://src/test/resources/?fileName=testJMSMessage.xml&delay=1000&idempotent=true&noop=true"
>                        />
>                          <bean ref="configureJMSServer"
> method="startServer"/>
>                           <bean ref="jmsProducer" method="produce"/>
>                 </route>
>        </camelContext>
>
>  can somebody please suggest me how I can persist the messages in the jms
>  topics if they are not consumed.
>  Thx.
> --
> View this message in context:
> http://old.nabble.com/Messages-not-getting-persisted-while-the-JMS-broker-restart-tp28485508p28485508.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
>


-- 
http://blog.garytully.com

Open Source Integration
http://fusesource.com

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message