How Azure Event Hubs uses Azure Service Bus - azure

This question is not about the difference between Azure Event Hubs and Azure Service Bus.
The question is as follows:
If you add add Azure Events Hub to your application, then you will notice that it depends on Azure Service Bus, So Events Hub uses and relies on Service Bus. So the question will arise how Events Hub benefit from Service Bus, and how Service Bus fits in the partitioning concept of Events Hub? Does EH creates SB factories under the hood and uses them as partitions? Or what is the story.
I am happy to read articles or books about the issue.

Event Hubs doesn't use Service Bus but they share common components that is why you may see "Service Bus" references when working with Event Hubs resources like exceptions, metrics, client errors etc.

Related

send events from Azure Service Bus Topic to Event Hub

I want to send an event that is sent to Azure Service Bus topic to an event hub. Is this possible?
Details:
I am working with a different team in my company that receives third party events (via webhook) to Azure Service Bus topic and this is further used in different application.
My team wants to now listen/subscribe to this topic using our existing event hub and using azure capture store these events to a storage account.
I did the following:
I created a subscription to their topic in their Azure Service Bus.
I created an event hub in my Event hub namespace.
I am not sure, how to now connect the azure service bus topic subscription to send those events to my event hub.
Thanks for your time.
Service bus operates with the receivers having to pull messages from it. This is opposite to Eventgrid which pushes the events to its subscribers. Eventhub does not pull messages from the source, we need to push messages into it. So you cannot achieve your requirement without an extra component between Service Bus and Eventhub.
One of the possible components would be a service bus topic triggered azure function LINK which writes into the eventhub using output binding LINK or the SDK LINK.
You will need to choose your service plan carefully depending on the volume of messages expected but usually Consumption plan will suit this purpose.

Azure Hub IoT to Azure Function Pricing

I'm making a comparison between different Cloud vendors for IoT solutions.
I'm now on Azure IoT Hub, which will ingest data from IoT devices (we want only to send from devices to cloud, say through MQTT, and not receive anything back). My aim is to pass these data to an Azure Function, execute some computation, and save them in some DB (e.g.CosmosDB). Here my doubts:
Which MQTT messages Do I have to consider for the billing? (only those with telemetry or which others?)
I saw that there is the possibility of going from Hub IoT to Azure Function with a built-in endpoint. Is it free? I'm afraid of some hidden costs, like those of Event Hubs or the built-in endpoint.
The sending of data from IoT Hub to Azure Function is considered as a normal "cloud-to-device" messages (and consequently they're billed), or are they free? For example IoT Hub ingest 10 messages (<4KB) and forward them to Functions. Do I pay them as 10 messages or 20 messages?
Thanks in advance for your help.
Which MQTT messages - You have to consider the below list of messages for Azure IoTHub Billing, they are
Device to Cloud
Cloud to Device
Method execution
Jobs
Detailed break up of billing information by each operation
https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-pricing#charges-per-operation
Nothing free in the cloud :)
Data read from IoTHub to any other service attracts the regular data transfer cost. Refer to the below link
https://azure.microsoft.com/en-in/pricing/details/bandwidth/
All the pricing information detailed here https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-pricing is specific to Azure IoTHub for D2C & C2D. Any data egress from IoTHub to other Azure Services is as per the regular data transfer charges.
https://azure.microsoft.com/en-in/pricing/details/bandwidth/

Fundamental difference between Azure Event Hub and Azure Service Bus?

Apart from Azure service bus uses Topics and Azure Event Hub is based on Events - is there any Fundamental difference between Azure Event Hub and Azure Service Bus?
To me, there is no real difference between events and messages as both are just a different type of Json.
Even though you are dealing with JSON in both services, there is fundamentally difference between the two.
Azure Event Hubs focuses more on event streaming whereas Azure Service Bus is more focused on high-value enterprise messaging, which denotes Azure service is focused on messages rather than events.
In azure service bus With a topic, every consumer that subscribed to the topic will get each message which means each message is picked up by only 1 consumer. In case of event hub you can have multiple consumers.
You can read from the docs page here

Azure Service Bus: How to achieve eventual consistency when a subscriber goes down

Currently I am using Azure Service Bus as a means to communicate and keep data consistent among the different services in my platform. However, let's say that one of my services (subscribers) goes down for an extended period of time and is unable to receive any events. Suddenly this service is in an inconsistent state.
Does Azure Service Bus have any type of "event sourcing" solution in place in order to replay my events? I understand that Azure Event Hubs has this feature where I can store events in an append only fashion to azure blob storage. However, the only thing I am finding for Azure Service Bus is the dead letter queue and my understanding that this is only used when no subscribers are capable of processing an event.
Is this something that I will have to build myself?
All events stored in a subscription will be delivered once the consumer is up and running unless the subscription has DefaultMessageTimeToLive (TTL) set to purge messages.

Azure Service Fabric routing

I would like to get some recommendation, for designing a routing of IoT messages in Azure.
I have following scenario:
Senors sending messages to Azure IoT Hub in Google Protobuf format. Depending of the type of a message, I want to route the message to different applications inside a service fabric.
My current approach is to use a service fabric application to receive all messages from the IoT hub, parse the protobuf message, send the message depending on their type (attribute inside the protobuf) to an type-specific Azure event hub. Now the applications fetches the messages from their "own" event hub and process the messages.
I'm not sure if this is the best approach. I don't like the fact, to have one event hub for each type of message. Service Bus Topics are probably not an option, because I have a lot of messages (~30k per second).
Do I realy need a event hub, to decoupling this process, or does it make sense, to send the messages from the "routing application" direct to the different "type applications"?
What do you think?
Regards,
Markus
If you really need high performance you should take a look at IoT Hub and Event Hubs. Azure Event Hubs is a highly scalable data streaming platform and event ingestion service capable of receiving and processing millions of events per second. Event Hubs can process and store events, data, or telemetry produced by distributed software and devices. Data sent to an event hub can be transformed and stored using any real-time analytics provider or batching/storage adapters.
In other hand if you need only 30k messages per second you can go with Premium Messaging.
Comparison of Azure IoT Hub and Azure Event Hubs
Premium Messaging: How fast is it?
What is Event Hubs?

Resources