Hi,

I think you need to post this issue into ActiveMQ user mailing list instread of the camel one.
This is an ActiveMQ related issue :)


Willem


usha Kanteti 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.

Reply via email to