Greeting Monks! I would like to seek advice from senior monks on this matter. I am developing automatic data re-processing system. Basically it is pretty similar to TCP data re-transmission.

A process will generate a bunch of data di (d1,d2,d3...dn), and it must be transferred to receiver process. Sender sends di+1 if receiver reply di (with OK) otherwise, Sender will re-send di again. Basically Receiver should receive data in order (d1,d2,..dn) and sender should at the end received replies with (OK) in order (d1,d2,..dn) Note: Sender and receiver are different processes (potentially across network) and there are time gaps between data generation (d1, 1/2 hour ,d2 , 1 hr, d3 ..)

My plan currently is as follow: There will be persitence queue with some sort of locking mechanism. I have found some modules (http://search.cpan.org/~revmischa/Data-Queue-Persistent-0.13/lib/Data/Queue/Persistent.pm) but it does not seem to provide locking the queue.

OnDataGenerationEvent(Data d) - queue.add(d, {state => PENDING_TRANSFER} ) process(queue) OnDataReceivedEvent(Data reply) - lock(queue) { d = dequeue() if reply.status = OK then # no Op else # status is NAK # add back to front of queue queue.add_front(d,{state => PENDING_TRANSFER}) endif } process(queue) sub process(queue) lock(queue ){ d = dequeue(queue) if d.state = PENDING_TRANSFER then transfer(d) queue.add(d, {state => PENDING_REPLY } ) endif }

In reply to Message Queue library by pwagyi

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.