Thursday, November 24, 2022

Azure Service Bus


Azure Service Bus is a fully managed enterprise message broker with message queues and publish-subscribe topics (in a namespace). Service Bus is used to decouple applications and services from each other, providing the following benefits:

Summary: Data is transferred between different applications and services using messages. A message is a container decorated with metadata and contains data. The data can be any kind of information, including structured data encoded with common formats such as the following ones: JSON, XML, Apache Avro, and Plain Text.


Messages are sent to and received from queues. Queues store messages until the receiving application is available to receive and process them.
Messages in queues are ordered and timestamped on arrival. Once accepted by the broker, the message is always held durably in triple-redundant storage, spread across availability zones if the namespace is zone-enabled. Service Bus never leaves messages in memory or volatile storage after they've been reported to the client as accepted.
Messages are delivered in pull mode, only delivering messages when requested. Unlike the busy-polling model of some other cloud queues, the pull operation can be long-lived and only complete once a message is available.


You can also use topics to send and receive messages. While a queue is often used for point-to-point communication, topics are useful in publish/subscribe scenarios.
Topics can have multiple, independent subscriptions, which attach to the topic and otherwise work exactly like queues from the receiver side. A subscriber to a topic can receive a copy of each message sent to that topic. Subscriptions are named entities. Subscriptions are durable by default but can be configured to expire and then be automatically deleted. Via the Java Message Service (JMS) API, Service Bus Premium also allows you to create volatile subscriptions that exist for the duration of the connection.
You can define rules on a subscription. A subscription rule has a filter to define a condition for the message to be copied into the subscription and an optional action that can modify message metadata. For more information, see Topic filters and actions. This feature is useful in the following scenarios:
You don't want a subscription to receive all messages sent to a topic.
You want to mark up messages with extra metadata when they pass through a subscription

Some Termonologies for this blog :

1. Messaging: Transfer business data, such as sales or purchase orders, journals, or inventory movements.

2. Namespaces: A namespace is a container for all messaging components (queues and topics). Multiple queues and topics can be in a single namespace, and namespaces often serve as application containers.
A namespace can be compared to a server in the terminology of other brokers, but the concepts aren't directly equivalent. A Service Bus namespace is your own capacity slice of a large cluster made up of dozens of all-active virtual machines. It may optionally span three Azure availability zones. So, you get all the availability and robustness benefits of running the message broker at an enormous scale. And, you don't need to worry about underlying complexities. Service Bus is serverless messaging.

3. Decouple applications: Improve the reliability and scalability of applications and services. Producers and consumers don't have to be online or readily available at the same time. The load is leveled such that traffic spikes don't overtax a service.

4. Load balancing: Allow for multiple competing consumers to read from a queue at the same time, each safely obtaining exclusive ownership of specific messages.

5. Topics and subscriptions: Enable 1:n relationships between publishers and subscribers, allowing subscribers to select particular messages from a published message stream.

6. Transactions: Allows you to do several operations, all in the scope of an atomic transaction. For example, the following operations can be done in the scope of a transaction.
Obtain a message from one queue.
Post results of processing to one or more different queues.
Move the input message from the original queue.
The results become visible to downstream consumers only upon success, including the successful settlement of the input message, allowing for once-only processing semantics. This transaction model is a robust foundation for the compensating transactions pattern in the greater solution context.

7. Message sessions: Implement high-scale coordination of workflows and multiplexed transfers that require strict message ordering or message deferral.
If you're familiar with other message brokers like Apache ActiveMQ, Service Bus concepts are similar to what you know. As Service Bus is a platform-as-a-service (PaaS) offering, a key difference is that you don't need to worry about the following actions. Azure takes care of those chores for you.
Worrying about hardware failures
Keeping the operating systems or the products patched
Placing logs and managing disk space
Handling backups
Failing over to a reserve machine

8. Advanced features: Service Bus also has advanced features that enable you to solve more complex messaging problems. The following sections describe these key features:

9. Message sessions: To realize a first-in, first-out (FIFO) guarantee in Service Bus, use sessions. Message sessions enable joint and ordered handling of unbounded sequences of related messages.

10. Auto-forwarding: The auto-forwarding feature enables you to chain a queue or subscription to another queue or topic that is part of the same namespace. When auto-forwarding is enabled, Service Bus automatically removes messages that are placed in the first queue or subscription (source) and puts them in the second queue or topic (destination).

11. Dead-lettering: Service Bus supports a dead-letter queue (DLQ) to hold messages that cannot be delivered to any receiver, or messages that cannot be processed. You can then remove messages from the DLQ and inspect them.

12. Scheduled delivery: You can submit messages to a queue or topic for delayed processing. For example, to schedule a job to become available for processing by a system at a certain time.

13. Message deferral: When a queue or subscription client receives a message that it's willing to process, but for which processing isn't currently possible because of special circumstances within the application, the entity can defer retrieval of the message to a later point. The message remains in the queue or subscription, but it's set aside.

14. Transactions: A transaction groups two or more operations together into an execution scope. Service Bus supports grouping operations against a single messaging entity (queue, topic, subscription) within the scope of a transaction.

15. Filtering and actions: Subscribers can define which messages they want to receive from a topic. These messages are specified in the form of one or more named subscription rules. For each matching rule condition, the subscription produces a copy of the message, which may be differently annotated for each matching rule.

16. Auto-delete on idle: Auto-delete on idle enables you to specify an idle interval after which the queue is automatically deleted. The interval is reset when there is traffic on the queue. The minimum duration is 5 minutes.

17. Duplicate detection: If an error occurs that causes the client to have any doubt about the outcome of a send operation, duplicate detection takes the doubt out of these situations by enabling the sender to resend the same message, and the queue or topic discards any duplicate copies.

18. Shared access signature (SAS): Role-based access control, and managed identities
Service Bus supports security protocols such as Shared Access Signatures (SAS), Role Based Access Control (RBAC), and Managed identities for Azure resources.

19. Geo-disaster recovery: When Azure regions or datacenters experience downtime, Geo-disaster recovery enables data processing to continue operating in a different region or datacenter.

20. Security: Service Bus supports standard Advanced Message Queuing Protocol (AMQP) 1.0 and HTTP/REST protocols.