> For the complete documentation index, see [llms.txt](https://courier-gojek.gitbook.io/vernemq/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://courier-gojek.gitbook.io/vernemq/configuring-vernemq/genericofflinestore.md).

# Generic offline store

Configure offline message store.

In the vanilla VerneMQ(1.11.0) on netsplit, the broker state had to be cleared before restoration which led to loss of offline messages stored in leveldb using `vmq_generic_message_store` plugin. Since this kind of persistence is actually not useful so no-op engine was introduced which bypass this persistence step and helped in quick recovery of broker as there was no message state to be loaded in memory.

Using offline message store, only offline messages are persisted for the offline clients. In order to use offline message store, message store plugin needs to be explicitly configured.

```
message_store_plugin = vmq_generic_offline_msg_store
```

Currently two offline store engines are available, postgres and redis sentinel.

### Offline store engine

Specify the engine to be used for storage.

```
offline_message_store_engine = vmq_offline_storage_engine_redis
```

### Offline store host

For redis sentinel engine, all the hosts(master and slaves) can be specified in a list format, `["host1", "host2"]`

```
offline_message_store_opts.host = localhost
```

### Offline store port

Specify the port on which the offline store is listening.

```
offline_message_store_opts.port = 6379
```

### Offline store database

Specify the name of the database to be used as offline store.

```
offline_message_store_opts.database = 2
```

### Offline store connect timeout

Specify the connect timeout (in milliseconds).

```
offline_message_store_opts.connect_timeout = 4000
```

### Offline store query timeout

Specify the query timeout (in milliseconds).

```
offline_message_store_opts.query_timeout = 2000
```
