looks like you are creating transacted sessions and not calling commit
- is that you mean to do ?
On Jan 18, 2008, at 6:59 AM, Olivier Bigard wrote:
Hello,
We had the same problem with ActiveMQ 5.0.0.
Yesterday we downloaded the last 5.1 SNAPSHOT and the message
disappeared,
but ActiveMQ is still frozen after some messages...
I put a message in the forum with our Java code.
We are running ActiveMQ on Solaris platform with JDK 1.5.0_07.
Can anyone help us?
Thank you
Juergen.Schumacher wrote:
Hello,
ok, attaching the source code file does apparently not work here.
So here are the relevant code parts from the producer and processor
classes,
which create the connections to ActiveMQ and the messages.
Sorry for the trouble...
Regards,
Jürgen Schumacher
----------------
Procucer.java
private void initializeBrokerConnection() throws JMSException {
LOG.info("Connecting to " + brokerUrl);
ActiveMQConnectionFactory connectionFactory =
new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, brokerUrl);
connection = connectionFactory.createQueueConnection();
connection.start();
session = connection.createQueueSession(true,
Session.CLIENT_ACKNOWLEDGE);
destination = session.createQueue("queue1");
producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
}
private void startIteration() throws Exception {
for (int i = 0; i < numberOfMessages; i++) {
LOG.info("Creating message " + i);
TextMessage message = session.createTextMessage("Message #" +
i);
LOG.info("Sending message " + i);
producer.send(message);
session.commit();
producedCount++;
LOG.info("Produced " + producedCount + " messages.");
}
}
---------------
Processor.java
private void initializeBrokerConnection() throws JMSException {
LOG.info("Connecting to " + brokerUrl);
ActiveMQConnectionFactory connectionFactory =
new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, brokerUrl);
sourceConnection = connectionFactory.createQueueConnection();
destinationConnection = connectionFactory.createQueueConnection();
sourceConnection.start();
destinationConnection.start();
sourceSession = sourceConnection.createQueueSession(true,
Session.CLIENT_ACKNOWLEDGE);
destinationSession =
destinationConnection.createQueueSession(true,
Session.CLIENT_ACKNOWLEDGE);
source = sourceSession.createQueue("queue1");
consumer = sourceSession.createConsumer(source);
destination = destinationSession.createQueue("queue2");
producer = destinationSession.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
}
public void onMessage(Message message) {
if (message instanceof TextMessage) {
try {
String id = ((TextMessage) message).getText();
LOG.info("Processing id = " + id);
MapMessage map = destinationSession.createMapMessage();
map.setString("id", id);
map.setString("text", messageText);
LOG.info("Send message");
producer.send(map);
LOG.info("Acknowledge message");
message.acknowledge();
LOG.info("Commit source");
sourceSession.commit();
LOG.info("Commit destination");
destinationSession.commit();
producedCount++;
LOG.info("Produced " + producedCount + " messages.");
} catch (Exception ex) {
LOG.error("Error during processing", ex);
}
}
}
--
View this message in context:
http://www.nabble.com/High-message-frequency-causes-ActiveMQ-to-freeze-tp14919292s2354p14947393.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.