Perhaps it could be useful to have a circular buffer of sent messages on a pub socket. Perhaps two cache related protocol specific options. cache_length and cache_expire. pub : cache_length sets how many messages are kept in the cache. pub : cache_expire sets how old a message can be, and still get sent. 0 is no timeout. His problem would be solved by cache_length 1, cache_expire 0.