Message Queues have been around for many years, and I've implemented message queues using SonicMQ, MSMQ, IBM MQ, and MQTT. I like to keep my architecture as simple as possible, so I still use queues, but deciding between your "eventing" architecture brings Enterprise Service Buses (ESBs) and other players into the picture. The last 2 native PaaS players for messaging are Event Grid and Event Hub (IoT). It comes down to what you are trying to achieve, whether you will need more functionality later, what your business has available and the skills you have to work with.
I like Azure Storage Queues, they are cheap, simple to set up and understand, so for simple message queue capability:
Azure Storage Queues sit on Azure Storage (Type Queue Storage). Multiple queues can be on a single Queue Storage Account, and must be named in lowercase. Messages up to 64kb. The order of queued messages is not guaranteed. Max message lifespan
used to be 7 days (default is 7 days), now the maximum time-to-live can be set to -1, meaning never expire. SAS token to pragmatically access. REST API to add and pull from the Queue (also has a peek API). Azure Storage supports a "Poison queue," so when the "Dequeued count" exceeds the threshold set on the queue, the message is moved to the "Poisoned Queue". Pricing is pretty cheap, and LRS is the most affordable, with GA-GRS (Geo Redundant storage) being the most expensive.
Get a message from the queue and amend the message to wait 60 seconds (Code Source: Microsoft Docs)
QueueClient queueClient = new QueueClient(connectionString, queueName);
QueueMessage[] message = queueClient.ReceiveMessages();
queueClient.UpdateMessage(message[0].MessageId,
message[0].PopReceipt,
"Updated contents",
TimeSpan.FromSeconds(60.0)
Azure Enterprise Service Bus (ESB), is a fully managed ESB service. Allows for standard queues (point-to-point) or topics also called pub-sub (point-to-multipoint) messaging. Has two external connectivity options, using Hybrid connections (webSockets) over Azure Relay. Messages up to 256kb except Premium up to 1MB message size allowed in queues. In topics, I think, the max message size allowed is 100MB. Unlimited lifespan. Dead lettering option. Programmatic access via SAS token, AAD. Supports access via REST or AMQP (used for many years as the standard for Message Queues). Has Duplicate message detection (ensures "At-most-once" delivery).
MQTT (Message Queuing Telemetry Transport) is one of the most commonly used protocols in IoT (Internet of Things), especially for sensors and devices that need to communicate efficiently over constrained networks
Competitor options for Azure Enterprise Service Bus, including message exchanging technologies: AWS SQS, GCP Pub Sub, NATs, Oracle ESB, JBoss Fuse, Mule ESB (from Mulesoft), IBM Websphere ESB, BizTalk, Azure EventGrid, Azure Storage Bus, Sonic ESB, and I guess all the message queues think SonicMQ, MQTT, IBM MQ.
Update 31 Jan 2022:
Problem: Messages are pushed to the topic, but take 5-35 minutes to process. The listener was an app registered on Service Fabric, and this started happening after we rebuilt a new instance of Service Fabric. The Service Bus still works, but 1 subscriber was taking an extra 5-35 minutes, compared to the 1 second previously.
Resolution: As always, reboot :) I disabled the topic and re-enabled it, and the messages were being processed within 1 second. I could not find this behaviour on Google searches, and after a fair amount of trying to check messages and configuration, a good old restart fixed the delay in message processing.
More Info:
NATS - Common ESB software gaining popularity