<div>Sorry for taking this long to respond. I've been otherwise engaged and forgot about this conversation.<br>Thank you for your replies.<br><br><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">
  <p>If you don't want the server queue requests to be 'lost' then don't allow the<br>queues to expire!</p>
  <p>On the other hand your clients apparently wait forever. &nbsp;Is there a reason I<br>don't understand why the server queues expire but the clients don't have a<br>timeout for the responses?</p>
</blockquote>
If the upgrade of the server software fails and the developers do 
nothing, the queue expires eventually so that stale requests are dropped
 and the clients will start getting proper error messages informing them
 of this condition.<br>This is not the ideal solution of course (per-message TTL and return notification would be).<br><br></div><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">You want requests to either be processed or (reliably) not processed. &nbsp;You<br>never want the clients to be in any doubt about whether the request was<br>processed or not. &nbsp;So you wait forever in the client. &nbsp;However, requests that<br>get discarded never return so the client doesn't know. &nbsp;So you want expiry to<br>trigger replies to the clients. &nbsp;(Per-queue message TTLs also don't return.)</blockquote><div><br>&nbsp;Sounds about right.<br><br><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">Let's see -- how would we do this without a dead-letter mechanism? &nbsp;Well, apart<br>from making the server transactional, it might be useful to have an 'offline'<br>server that can take over any server's queue when it fails and either deal with<br>the requests [by issuing an 'offline' response?] or arrange for the server to<br>be restarted (and/or upgraded).<br></blockquote><div><br>This seems fairly complicated. I'll have to look into transactions to see if they will help in my case.<br></div></div>