You can use session to get an Azure topic to provide FIFO ordering but that's not quite the same thing as guaranteeing the order in which messages are processed.
Sessions are not enough of a guarantee here. For example, if you are using PeekLock
mode then a message that times out will return to the queue and be processed out of order. You can use ReceiveAndDelete
mode to counter this behavior but that means you lose the transactional nature of message handling.
One of the reasons why documentation may be a little light on this area is that it isn't a common use case. Messaging is about decoupling though asynchronous communication and ordering guarantees create temporal coupling between applications.
Ideally you should design your payloads so ordering doesn't matter. If that fails, use a timestamp that allows you to discard messages received out of order.
Discussed in more detail here: Don’t assume message ordering in Azure Service Bus
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…