Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

They are not allocated to a specific client

Persistence

Does Qpid support persistence (durability)?

Yes, there are third-party (non-Apache) modules for both C++ and Java. Historically, BDB has been used to provide persistence for both C++ and Java. However, this has created a licensing conflict with Apache, and thus the store modules are maintained off-site.

The terms durable and persistent are used interchangeably in this FAQ.

Where do I get the persistence store modules?

The persistence store modules may be obtained through anonymous subversion at the following locations:

C++: http://anonsvn.jboss.org.repos/rhmessaging/store/trunk/cpp
Java: http://anonsvn.jboss.org/repos/rhmessaging/store/trunk/java/bdbstore

How do I build the persistence store module from subversion checkouts?

C++
The README file contains detailed instructions, but here is a summary:

  1. Make sure that both the db4-devel and libaio-devel packages are installed prior to building.
  2. Make sure that qpid is built and you know the location of the qpid directory (ie the top-level directory containing the python and cpp sub-directories).
  3. In the store directory, run:
    Code Block
    ./bootstrap
    ./configure --with-qpid-checkout=/abs/path/to/qpid/dir
    make
    
  4. When built, the store library msgstore.so will be located in the lib/.libs directory.

Java
TODO

How do I use the persistence store module?

C++

  1. Start the broker making sure that the store module is loaded, ie
    Code Block
    qpidd --load-module=/path/to/msgstore.so --data-dir=/path/to/store-files ...
    
  2. Make sure that queues that will handle persistent messages are set durable.
    Note
    titleNote: Existing non-persistent queues cannot be made persistent

    If a queue has been declared without persistence, doing so again with persistence enabled while the old queue still exists in the broker will be ignored. Make sure that when a queue is declared persistent, there is no non-persistent queue of the same name in existence.

  3. For each message sent to a durable queue, make sure that it is set durable.

Java
TODO

How do I configure the persistence store?

C++

The broker loads help information from each module. To see the help options for the store, load the store module and specify help:

...

The size of the pages in the write page cache is set with the --wcache-page-size option, and sets a size in KiB. (Legal values are powers of 2, ie: 1, 2, 4, 8, 16, 32, 64, 128). Typically small page sizes give improved latency (especially for small messages), but are bad for message throughput, while large page sizes improve throughput but may cause some messages to have higher latencies.

Java
TODO

Wiki Markup
\[C++ store\] What is a RHM_IORES_ENQCAPTHRESH error?

...