【问题标题】:activemq delete consumed messagesactivemq 删除消费消息
【发布时间】:2016-02-26 22:48:12
【问题描述】:

我在我的应用程序中使用 ActiveMQ。我的问题是如何删除我从 kahadb 成功使用的消息。因为如果不删除,我的db.data文件就一直在变大。

这是我的消费者;

    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:8182");
    Connection connection = connectionFactory.createConnection();
    connection.start();
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    Destination destination = session.createQueue("TEST.FOO");
    MessageConsumer consumer = session.createConsumer(destination);

    MessageListener listner = new MessageListener() {
        int count = 0;

        public void onMessage(Message message) {
            if (message instanceof ObjectMessage) {
                ObjectMessage objectMessage = (ObjectMessage) message;
                ResponseDuration responseDuration = null;
                try {
                    responseDuration = (ResponseDuration) objectMessage.getObject();
                    System.out.println("Received Time : " + new Date() + "Received: " + responseDuration.toString());
                } catch (JMSException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }

                try {
                    ResponseDurationOperations.insertResponseDurations(responseDuration);
                    count++;
                    System.out.println("Count = " + count);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    };
    consumer.setMessageListener(listner);

【问题讨论】:

  • 任何帮助,我只想在消费者收到消息后从 db.data 文件中删除消息
  • 我的问题是相反的,我正在使用 Oracle 进行持久化。消息被消费后从数据库中删除,我怎样才能永远保留消息?
  • @NikhilJoshi:我也在寻找你的问题。目前对我们来说,消费者正在一个新的协议队列中发送每条消费的消息。所以我们每天都有消费消息的队列。但是肯定 ActiveMQ 本身一定有一些东西?

标签: activemq producer-consumer


【解决方案1】:

似乎 ActiveMQ 对持久性的含义与您(以及我)的含义不同。 持久性的定义不是永远持久,只是为了让您在重新启动服务器时避免消息丢失。 See this

您可以选择关闭持久性。见here。 例如通过这种方式:

ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");

【讨论】:

    猜你喜欢
    • 2021-04-02
    • 2019-12-27
    • 2015-11-24
    • 2015-11-25
    • 2021-03-06
    • 2012-07-09
    • 2020-01-17
    • 1970-01-01
    • 2015-07-16
    相关资源
    最近更新 更多