diff --git a/broker/src/main/java/org/eclipse/moquette/server/ConfigurationParser.java b/broker/src/main/java/org/eclipse/moquette/server/ConfigurationParser.java index 9138acbc..3e915247 100644 --- a/broker/src/main/java/org/eclipse/moquette/server/ConfigurationParser.java +++ b/broker/src/main/java/org/eclipse/moquette/server/ConfigurationParser.java @@ -46,6 +46,7 @@ class ConfigurationParser { m_properties.put("host", Constants.HOST); m_properties.put("websocket_port", Integer.toString(Constants.WEBSOCKET_PORT)); m_properties.put("password_file", ""); + m_properties.put("persistent_store", System.getProperty("user.home") + File.separator + "moquette_store.mapdb"); } /** diff --git a/broker/src/main/java/org/eclipse/moquette/server/Server.java b/broker/src/main/java/org/eclipse/moquette/server/Server.java index d98e801e..0c915553 100644 --- a/broker/src/main/java/org/eclipse/moquette/server/Server.java +++ b/broker/src/main/java/org/eclipse/moquette/server/Server.java @@ -31,9 +31,6 @@ public class Server { private static final Logger LOG = LoggerFactory.getLogger(Server.class); - public static final String STORAGE_FILE_PATH = System.getProperty("user.home") + - File.separator + "moquette_store.mapdb"; - private ServerAcceptor m_acceptor; SimpleMessaging messaging; @@ -64,7 +61,6 @@ public class Server { */ public void startServer(File configFile) throws IOException { LOG.info("Using config file: " + configFile.getAbsolutePath()); - LOG.info("Persistent store file: " + STORAGE_FILE_PATH); ConfigurationParser confParser = new ConfigurationParser(); try { @@ -86,6 +82,7 @@ public class Server { * */ public void startServer(Properties configProps) throws IOException { + LOG.info("Persistent store file: " + configProps.get("persistent_store")); messaging = SimpleMessaging.getInstance(); messaging.init(configProps); diff --git a/broker/src/main/java/org/eclipse/moquette/spi/impl/SimpleMessaging.java b/broker/src/main/java/org/eclipse/moquette/spi/impl/SimpleMessaging.java index 5e440aa4..859acb22 100644 --- a/broker/src/main/java/org/eclipse/moquette/spi/impl/SimpleMessaging.java +++ b/broker/src/main/java/org/eclipse/moquette/spi/impl/SimpleMessaging.java @@ -173,7 +173,7 @@ public class SimpleMessaging implements IMessaging, EventHandler { benchmarkEnabled = Boolean.parseBoolean(System.getProperty("moquette.processor.benchmark", "false")); //TODO use a property to select the storage path - MapDBPersistentStore mapStorage = new MapDBPersistentStore(); + MapDBPersistentStore mapStorage = new MapDBPersistentStore(props.getProperty("persistent_store", "")); m_storageService = mapStorage; m_sessionsStore = mapStorage; diff --git a/broker/src/main/java/org/eclipse/moquette/spi/persistence/MapDBPersistentStore.java b/broker/src/main/java/org/eclipse/moquette/spi/persistence/MapDBPersistentStore.java index 71abcf07..4fd2b11c 100644 --- a/broker/src/main/java/org/eclipse/moquette/spi/persistence/MapDBPersistentStore.java +++ b/broker/src/main/java/org/eclipse/moquette/spi/persistence/MapDBPersistentStore.java @@ -24,7 +24,6 @@ import org.eclipse.moquette.spi.impl.events.PublishEvent; import org.eclipse.moquette.spi.impl.storage.StoredPublishEvent; import org.eclipse.moquette.spi.impl.subscriptions.Subscription; import org.eclipse.moquette.proto.messages.AbstractMessage; -import static org.eclipse.moquette.server.Server.STORAGE_FILE_PATH; import static org.eclipse.moquette.spi.impl.Utils.defaultGet; import org.mapdb.DB; @@ -57,16 +56,21 @@ public class MapDBPersistentStore implements IMessagesStore, ISessionsStore { //persistent Map of clientID, set of Subscriptions private ConcurrentMap> m_persistentSubscriptions; private DB m_db; + private String m_storePath; + public MapDBPersistentStore(String storePath) { + this.m_storePath = storePath; + } + @Override public void initStore() { File tmpFile; try { - tmpFile = new File(STORAGE_FILE_PATH); + tmpFile = new File(m_storePath); tmpFile.createNewFile(); } catch (IOException ex) { LOG.error(null, ex); - throw new MQTTException("Can't create temp file for subscriptions storage [" + STORAGE_FILE_PATH + "]", ex); + throw new MQTTException("Can't create temp file for subscriptions storage [" + m_storePath + "]", ex); } m_db = DBMaker.newFileDB(tmpFile).make(); m_retainedStore = m_db.getHashMap("retained");