These are two separate things. The linearstore is the persistent message store. When you create a queue as durable (and your queues are durable in the email above) and send durable / persistent messages into the queue, the linear store will store all these messages to the disk for recovery in case of broker restart. However, the linear store it self doesn't offload them from memory. So they stay both in memory and on disk. When you stop and start the broker, it will read them from the disk into the memory and use them. This is what you are seeing right now.
Paging will take the messages from the memory and offload some parts of the memory to disk (it will use separate files for that - not the same files as the linearstore). Paging it self will only make sure that your memory consumption is under control. But when you stop and start the broker, the paging files are deleted and no message will be recovered from them. Of course you can combine both features and use them together. So depending on what is your usecase and what you actually want to achieve you have to configure the broker and the queues, for example: 1) "I want the messages to survive the broker restart, but I have more then enough memory" -----> Durable queues / linerstore ON && Paging OFF 2) "I don't need that the messages survive the restart, but I want to use only small amounts of memory for looot of messages" -----> Durable queues / Linearstore OFF && Paging ON 3) "I want the messages to survive broker restart and limit the RAM usage" -----> Durable queues / Linear store ON && Paging ON. Right now you seem to have the option 1 configured. I'm not sure what does "background recovery" do in Java broker. Does it mean that the broker is available already before loading all the messages? In that case no, the C++ broker will always first read all the messages from the disk and only once they are loaded, it will be available for connections. However, the startup is much faster with the linearstore than it used to be several releases ago with the old message store. J. On Fri, Oct 21, 2016 at 7:54 PM, rammohan ganapavarapu < rammohanga...@gmail.com> wrote: > Jakub, > > If by default its not flowing to disk, every thing should be in memory > right and if that is the case on broker restart i should loose messages > right? but in my case i do see messages got persisted on broker restart. > > > [root@broker1 ~]# ps -ef |grep linearstore > qpidd 1935 1 0 Oct20 ? 00:00:54 /usr/sbin/qpidd --config > /etc/qpid/qpidd.conf --daemon --module-dir=/usr/lib64/qpid/daemon/ > --load-module=/usr/lib64/qpid/daemon/linearstore.so > --load-module=/usr/lib64/liblinearstoreutils.so --data-dir=/data > --close-fd > 9 --pidfile /var/run/qpidd.pid > > root 21233 21143 0 17:43 pts/0 00:00:00 grep linearstore > [root@broker1 ~]# qpid-stat -q > Queues > queue dur autoDel excl msg > msgIn msgOut bytes bytesIn bytesOut cons bind > > ============================================================ > ============================================================== > 52177446-3a69-4680-b349-d4a5590a6fdd:0.0 Y Y 0 > 0 0 0 0 0 1 2 > ax-q-eaxgroup002-consumer-group-001 Y 5.47k > 5.67k 196 1.07g 1.11g 38.6m 0 2 > ax-q-eaxgroup002-consumer-group-001-dl Y 0 > 0 0 0 0 0 0 2 > > > [root@broker1 ~]# /etc/init.d/qpidd stop > Stopping Qpid AMQP daemon: [ OK ] > > [root@eqp042wo ~]# ps -ef |grep linearstore > root 21270 21143 0 17:43 pts/0 00:00:00 grep linearstore > > [root@broker1 ~]# /etc/init.d/qpidd start > Starting Qpid AMQP daemon: [ OK ] > [root@eqp042wo ~]# ps -ef |grep linearstore > qpidd 21293 1 70 17:43 ? 00:00:21 /usr/sbin/qpidd --config > /etc/qpid/qpidd.conf --daemon --module-dir=/usr/lib64/qpid/daemon/ > --load-module=/usr/lib64/qpid/daemon/linearstore.so > --load-module=/usr/lib64/liblinearstoreutils.so --data-dir=/data > --close-fd > 9 --pidfile /var/run/qpidd.pid > > root 21325 21143 0 17:44 pts/0 00:00:00 grep linearstore > [root@broker1 ~]# qpid-stat -q > Queues > queue dur autoDel excl msg > msgIn msgOut bytes bytesIn bytesOut cons bind > > ============================================================ > ============================================================== > a55ce766-c3f3-43ff-9104-c398a5bc6104:0.0 Y Y 0 > 0 0 0 0 0 1 2 > ax-q-eaxgroup002-consumer-group-001 Y 5.47k > 5.47k 0 1.07g 1.07g 0 0 2 > ax-q-eaxgroup002-consumer-group-001-dl Y 0 > 0 0 0 0 0 0 2 > > > If you observer above, i have 5.47k messages in queue before and after > broker restart if they are not flowing to disk and keeping them only in > RAM, on broker restart i those queues and messages should go away right? am > i missing any thing here?. Below is my queue config looks like. > > [root@broker1 ~]# python26 /usr/bin/qpid-config queues > Queue Name Attributes > ================================================================= > a98385a7-2be9-45bb-a823-5d996e34222d:0.0 auto-del excl > ax-q-eaxgroup002-consumer-group-001 --durable --file-size=5120 > --file-count=64 --max-queue-size=1073741824 --max-queue-count=1000000 > --limit-policy=flow-to-disk --argument no-local=False > ax-q-eaxgroup002-consumer-group-001-dl --durable --file-size=6000 > --file-count=4 --max-queue-size=52428800 --max-queue-count=100000 > --limit-policy=flow-to-disk --argument no-local=False > > One more question, is background recovery feature available in cpp broker > as well like in java broker? > > Thanks, > Ram > > > On Fri, Oct 21, 2016 at 12:16 AM, Jakub Scholz <ja...@scholz.cz> wrote: > > > I think the docs just list an example of what you might get when running > > qpid-config --help. But your actual qpid-config from 1.35.0 should nto > > contain flow-to-disk anymore. > > > > Jakub > > > > On Fri, Oct 21, 2016 at 12:45 AM, rammohan ganapavarapu < > > rammohanga...@gmail.com> wrote: > > > > > From the docs i still see "--limit-policy [none | reject | > flow-to-disk" > > to > > > configure queues but its not supported in V1.35.0? > > > > > > > > > https://qpid.apache.org/releases/qpid-cpp-1.35.0/cpp- > > > broker/book/chapter-Managing-CPP-Broker.html#MgmtC-2B-2B- > Usingqpidconfig > > > > > > --durable Queue is durable > > > --file-count N (8) Number of files in queue's persistence journal > > > --file-size N (24) File size in pages (64Kib/page) > > > --max-queue-size N Maximum in-memory queue size as bytes > > > --max-queue-count N Maximum in-memory queue size as a number of > > > messages > > > --limit-policy [none | reject | flow-to-disk | ring | ring-strict] > > > Action taken when queue limit is reached: > > > none (default) - Use broker's default > policy > > > reject - Reject enqueued messages > > > flow-to-disk - Page messages to disk > > > ring - Replace oldest > > > unacquired message with new > > > ring-strict - Replace oldest message, > > > reject if oldest is acquired > > > > > > > > > > > > On Thu, Oct 20, 2016 at 3:20 PM, Jakub Scholz <ja...@scholz.cz> wrote: > > > > > > > Hi, > > > > > > > > Do you have the module installed in the path you mentioned? If yes, > > then > > > > you should be able to load the module using the option > > > > "--load-module=/usr/lib64/qpid/daemon/linearstore.so" or by placing > > > > "load-module=/usr/lib64/qpid/daemon/linearstore.so" into your config > > > file. > > > > However, I believe that usually the store should be loaded by default > > > when > > > > it is installed. That is unless you specified that you want to start > > the > > > > broker without any modules with the no-module-dir option. If the > module > > > is > > > > loaded, you should see in your log file something like this: > > > > 2016-10-20 22:15:25 [Store] notice Linear Store: Store module > > > initialized; > > > > store-dir=/var/lib/qpidd/store > > > > > > > > Additionally to loading the store, you need to have the queues > created > > as > > > > durable and send the messages as durable/persistent. Otherwise the > > > > queues/messages will not use the persistent message store. > > > > > > > > Flow to disk feature has been removed some time ago. The > functionality > > it > > > > provided (offloading messages from memory to disk) is now provided by > > the > > > > queue paging feature. Strangely, I can't find it described anywhere > in > > > the > > > > Qpid C++ broker documentation. But you can have a look at my answer > in > > > this > > > > thread - > > > > http://qpid.2158936.n2.nabble.com/How-do-I-create-a-queue- > > > > larger-than-available-RAM-td7643861.html > > > > - it describes how to configure it and it should be still valid in > > > 1.35.0. > > > > > > > > Regards > > > > Jakub > > > > > > > > On Thu, Oct 20, 2016 at 11:56 PM, rammohan ganapavarapu < > > > > rammohanga...@gmail.com> wrote: > > > > > > > > > Hi, > > > > > > > > > > How to enable persistent message store in qpid-cpp-1.35 do i have > to > > > > > install/load "/usr/lib64/qpid/daemon/linearstore.so"? also how to > > > > > configure > > > > > flow_to_disk policy? > > > > > > > > > > > > > > > Thanks, > > > > > Ram > > > > > > > > > > > > > > >