【发布时间】:2019-02-10 06:43:46
【问题描述】:
我目前正在使用 Apache Camel 及其 MQTT 组件。我有一条使用来自代理(Apache ActiveMQ artemis)的消息的路由和另一个向它发送消息的路由。问题是当消息代理不可用时没有抛出异常。此外,所有未发送的消息都保存在内存中,等待服务器最终重新启动,从而导致内存溢出。不知道是不是和MQTT协议本身有关,还是跟端点的配置有关。
这是我的配置:
MQTTEndpoint mqttEndpoint = null;
mqttEndpoint = (MQTTEndpoint) mqttComponent.createEndpoint(MQTT_BROKER);
mqttEndpoint.getConfiguration().setHost(properties.getBrokerAddress());
mqttEndpoint.getConfiguration().setPublishTopicName(publishTopicName);
//mqttEndpoint.getConfiguration().setSubscribeTopicNames(subscribreTopicNames);
mqttEndpoint.getConfiguration().setUserName(properties.getBrokerUsername());
mqttEndpoint.getConfiguration().setPassword(properties.getBrokerPassword());
mqttEndpoint.getConfiguration().setSslContext(createSSLContext());
mqttEndpoint.getConfiguration().setByDefaultRetain(false);
mqttEndpoint.getConfiguration().setQualityOfService(QoS.AT_MOST_ONCE.toString());
mqttEndpoint.getConfiguration().setConnectAttemptsMax(1);
mqttEndpoint.getConfiguration().setConnectWaitInSeconds(5);
mqttEndpoint.getConfiguration().setReconnectBackOffMultiplier(1);
mqttEndpoint.getConfiguration().setDisconnectWaitInSeconds(3);
mqttEndpoint.setCamelContext(camelCtx);
【问题讨论】:
-
你用的是什么版本的 Camel 和 Artemis?
-
我使用的是 Camel 版本 2.21.0
-
还有阿耳忒弥斯 2.6.0
标签: exception-handling apache-camel out-of-memory mqtt except