title: Really durable queue in RabbitMQ
body: <p>I checked "Message durability" part of <a href="https://www.rabbitmq.com/tutorials/tutorial-two-python.html" rel="nofollow">RabbitMQ tutorial</a>. But it has this note:</p>
  
  <blockquote>
    <p>Marking messages as persistent doesn't fully guarantee that a message
    won't be lost. Although it tells RabbitMQ to save the message to disk,
    there is still a short time window when RabbitMQ has accepted a
    message and hasn't saved it yet. Also, RabbitMQ doesn't do fsync(2)
    for every message -- it may be just saved to cache and not really
    written to the disk</p>
  </blockquote>
  
  <p>But what if I need <strong>really</strong> durable queue? Which best practices can I to use? 
  Should I have "queue" in database and some "resender" by cron if, for example, message wasn't ACK'ed in 2 minutes? Are there some better solutions?</p>
  
  <p>Also, what if my consumer crashed after it processed message and <em>before</em> it sent ACK?</p>
  
  <p>UPD: my question was marked as "possible duplicate" of clustering question. I have no idea how clusters can help to solve these problems.</p>