Jboss HornetQ消费者在N小时后停止接收消息

Jboss HornetQ消费者在N小时后停止接收消息,jboss,jms,hornetq,Jboss,Jms,Hornetq,我正在使用一个独立运行的HornetQ(v2.2.13)使用者来阅读JBOSS服务器发布的持久性主题(7.1.1最终版)。在几小时内(2-6小时之间),一切都很顺利,然后消费者就不再接收来自该主题的消息。从服务器上的日志文件中,我看到数据不断被泵入管道,但消费者日志文件表明客户端停止读取数据。我推断,从客户端说它最后一次读取主题以外的消息是12:00:00,服务器日志说它最后一次将消息推送到主题是14:00:00 我尝试过调整HornetQ配置,但它似乎无法持续工作 我用来与主题交流的代码如下

我正在使用一个独立运行的HornetQ(v2.2.13)使用者来阅读JBOSS服务器发布的持久性主题(7.1.1最终版)。在几小时内(2-6小时之间),一切都很顺利,然后消费者就不再接收来自该主题的消息。从服务器上的日志文件中,我看到数据不断被泵入管道,但消费者日志文件表明客户端停止读取数据。我推断,从客户端说它最后一次读取主题以外的消息是12:00:00,服务器日志说它最后一次将消息推送到主题是14:00:00

我尝试过调整HornetQ配置,但它似乎无法持续工作

我用来与主题交流的代码如下

private TransportConfiguration getTC(String hostname) {
        Map<String,Object> params = new HashMap<String, Object>();
        params.put(TransportConstants.HOST_PROP_NAME, hostname);
        params.put(TransportConstants.PORT_PROP_NAME, 5445);
        TransportConfiguration tc = new TransportConfiguration(NettyConnectorFactory.class.getName(), params);
        return tc;

    }

    private Topic createDestination(String destinationName) {
        Topic topic = new HornetQTopic(destinationName);
        return topic;

    }

    private HornetQConnectionFactory createCF(TransportConfiguration tc) {
        HornetQConnectionFactory cf = HornetQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType .CF, tc);
        return cf == null ? null : cf;

    }

您不会得到任何关于服务器断开连接的日志

您是否尝试过使用客户端故障检查周期和其他ping参数

虚拟机设置如何


你是如何确认这些信息的?我看到您将其创建为事务。您确定在收到消息时正在提交发送吗?

您不会收到任何关于服务器断开连接的日志

您是否尝试过使用客户端故障检查周期和其他ping参数

虚拟机设置如何


你是如何确认这些信息的?我看到您将其创建为事务。您确定在收到消息时提交了发送吗?

我在服务器端没有看到任何关于断开连接的日志,我唯一看到任何关于断开连接的消息的时候是当我在客户端和客户端说无法重新连接之前停止服务器时。关于TXs,我会在收到每一条消息后立即对其进行确认。由于没有复制它的方法或没有更多信息,我只能猜测。我们已经测试过这样的场景,没有发现任何问题。我猜您没有配置分页,另一个订阅导致系统阻塞。您应该确保没有死订阅(您创建了一个订阅,但忘记了它),或者配置分页。你为什么不把讨论转到hornetq用户论坛,在那里你可以提供更多信息?我会在今天晚些时候或者明天早上在那里开始一个帖子。谢谢检查您是否没有过期订阅。(原因是什么)。我在hornetq论坛上发布了一条新的帖子:我没有在服务器端看到任何关于断开连接的日志,我唯一一次看到任何关于断开连接的消息是当我在客户端和客户端说它无法重新连接之前停止服务器时。关于TXs,我会在收到每一条消息后立即对其进行确认。由于没有复制它的方法或没有更多信息,我只能猜测。我们已经测试过这样的场景,没有发现任何问题。我猜您没有配置分页,另一个订阅导致系统阻塞。您应该确保没有死订阅(您创建了一个订阅,但忘记了它),或者配置分页。你为什么不把讨论转到hornetq用户论坛,在那里你可以提供更多信息?我会在今天晚些时候或者明天早上在那里开始一个帖子。谢谢检查您是否没有过期订阅。(原因是什么)。我在大黄蜂Q论坛上发布了一条新帖子:
TransportConfiguration tc = this.getTC(this.hostname);
        HornetQConnectionFactory cf = this.createCF(tc);
        cf.setRetryInterval(4000);
        cf.setReconnectAttempts(10);
        cf.setConfirmationWindowSize(1000000);

        Destination destination = this.createDestination(this.topicName);
        logger.info("Starting Topic Connection");
        try {
            this.connection = cf.createConnection();

            connection.start();
            this.session = connection.createSession(transactional, ackMode);
            MessageConsumer consumer = session.createConsumer(destination);
            consumer.setMessageListener(this);

            logger.info("Started topic connection");
        } catch (Exception ex) {
            ex.printStackTrace();
            logger.error("EXCEPTION!");
        }