Versions Compared

Key

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

...

How do I build the persistence 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.
  3. For each message sent to a durable queue, make sure that it is set durable.
  4. Note
    titleNote: Existing 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.

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

Java
TODO

How do I configure the 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:

...

Note that a set of journal files will be created for each queue declared and marked persistent. Each persistent queue has its own private journal. These are stored in the data directory by default (ie it uses the brokers broker's --data-dir setting) or can be overridden with the --store-dir option. Note that if the broker is started with the --no-data-dir option, then no store default exists, and the --store-dir option MUST be specified.

The options that can be set control the store files - or "store geometry". These include the size and number of files that make up the journal for each queue. The --num-jfiles options sets the number of files to use (between 4 and 64) and the --jfile-size-pgs sets the size of the file in 64kiB blocks.

Java
TODO

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

...

  1. The journal is too small for the message depth. The journal must be made large enough to hold all of the messages you expect to be on the queue at any one moment (a worst-case scenario). Make the journal capacity larger through the use of the --num-jfiles and --jfile-size-pgs parameters.
    Info
    titleRule of thumb for sizing the journal

    Make the journal twice the size of all the messages you need to store at any one moment in time.

  2. Messages are not being dequeued as expected. Since the store is a circular file buffer, if one un-dequeued (not consumed) message remains, it can eventually "block" the storage of new messages as the buffer gets overwritten.

Wiki Markup
\[C++ store\] What is the TPL? What are the \-\-tpl\-\* options for?

The TPL stands for Transaction Prepared List. The store creates a single instance of a store for storing transaction boundaries called the Transaction Prepared List. Because the TPL is frequently flushed and has very different usage patterns to a normal store, it has been provided with its own set of configuration parameters:

  • --tpl-num-jfiles: The number of files in the TPL journal
  • --tpl-jfile-size-pgs: The file size in 64kiB blocks of the TPL journal.
  • --tpl-wcache-page-size: The size of the write cache in the TPL in KiB, which is typically set a lot smaller than the average message store.

How To

C++

How to use RDMA with Qpid

...

If you are running from vendor RPMs, this should work automatically.

Java

Children Display
pageqpid:Qpid Java How To