java jms消息删除_activemq的topic消息一直都会存在数据库中,为什么不会删除
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
我把消息設置的持久化到數據庫。采用topic的方式發送消息。
每次發送消息之后,數據庫的ACTIVEMQ_MSGS表里都會插入10條記錄(每次是發送10條消息),在接收端接收消息之后,ACTIVEMQ_MSGS表里的數據沒有被刪掉,求大神幫忙給看看。(采用queue方式發送消息,接收端沒接收消息之前,ACTIVEMQ_MSGS表里有數據,接收之后ACTIVEMQ_MSGS的數據庫就自動被刪掉了)
發送端的代碼如下;
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import org.apache.activemq.ActiveMQConnectionFactory;
public class TopicPublisher {
public static void main(String[] args) throws JMSException {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("myTopic.messages");
MessageProducer producer = session.createProducer(topic);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
for(int i =0;i<10;i++){
TextMessage message = session.createTextMessage();
message.setText("message_" + System.currentTimeMillis());
producer.send(message);
System.out.println("Sent message: " + message.getText());
// try {
// Thread.sleep(1000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
}
session.close();
connection.stop();
connection.close();
}
}
接收端的代碼如下:
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import org.apache.activemq.ActiveMQConnectionFactory;
public class TopicSubscriber {
/**
* @param args
*/
public static void main(String[] args) {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
try {
Connection connection = factory.createConnection();
connection.setClientID("null");
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic("myTopic.messages");
MessageConsumer consumer = session.createDurableSubscriber(topic,"123");
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
TextMessage tm = (TextMessage) message;
try {
System.out.println("Received message: " + tm.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
} catch (JMSException e) {
e.printStackTrace();
}
}
}
總結
以上是生活随笔為你收集整理的java jms消息删除_activemq的topic消息一直都会存在数据库中,为什么不会删除的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 配一把车钥匙多少钱啊?
- 下一篇: java代码实现count排序_java