If you have a database that supports transactions and something like skip locked, you always have option of building a transactional outbox when you need it.