Skip to main content

Message Queue + Azure Functions + CosmosDB. A perfect trio !!!

Ok !! It's not about SEX, it's about something they name AZURE.

Seriously, I'll asume in this short article, that you have some kind of experience with azure.

Suppose you have a heavy load. Incoming data come from some entity(application) that send, with high frequency, messages to some queue in Azure. Also you need analyze incoming data and apply some logic before insert data in your persistence layer.

It's a complicated task ?

Actually it's a simple task !!!

Step  1. Create storage account. 

Step 2. Create Queue

Step 3.  CosmosDB Resource

Let's asume we already have Data Base and Collection "READY" in CosmosDB

Step 4. Create Azure Function Application

Step 5 Create Azure Function. 

In this step we will see how to bind Message Queue and  CosmosDB collection inside Azure Function.

We will use template for Queue Trigger.

Define name and input bind. Remember this Azure function will listen a queue for message incoming.
Select storage account to create connection. Just click on new link to select from all storage accounts available in our Azure Subscription.

By default, we have this code. 

Step 6.  OUTPUT Binding 

Now we need create OUTPUT binding. In other words, we need create connection to CosmosDB  to insert incoming data after analyze it.

Defining Data Base , collection, connection string and partition key in case you need it.

Now magic is coming !!!

Step 7.  Coding

Done ?
Yes !!! I'll try to resume .

I need to decouple a process. Then we use the queue capability to support high load. Many entities(applications), send simultaneously messages to a queue. There is a Azure Function listening message incoming , analyze it , apply logic and insert into cosmos db collection.

Step 8. Operation results

a.- Simulating an entity that sends a message to the queue.

You can use Microsoft Azure Storage Explorer

b.- Azure function log 

c.- Query in CosmosDB collection 

Bye !!


Popular posts from this blog

Update data in COSMOS DB with Azure Functions.

I was looking for a way to update COSMOS DB document after receive a  request inside Azure Function without any COSMOS DB biding. I didn't find a way !!  I took another way. I don't know if it is the right or wrong way. But this way works for me. Scenario is very simple. We have sales orders arriving into the data base. We have another Azure function to insert those new orders. But suppose we need to cancel some order. How to do that using Azure Function ? Let´s start !!! Step 1. Sample Collection. This collection is very simple,  we are focused on results. Step 2. Create a Function and Select HttpTrigger template.  Step 3. Code  More code.  Step 4. Test Step 5. Results  See you soon 

Some architectures with Cosmos DB and Azure Functions

Fig 1. Access Control Fig 2. Documents storage with reference to blob. Fig 3. Automatic storage maintenance of Documents with expiration. Fig 4. Reports.

Inserting Data with Azure Functions in CosmosDB

I was wondering how to use Azure Function to insert data in CosmosDB when this function receives an HTTP request Surprise!!  It´s easy  Step 1. Create your DataBase and Collection inside CosmosDB in Azure.  Step 2. Create Function App Step 3.  Create a new function. In this case use template "HttpTrigger - C#" Step 4. Select "Integrate" option  Be sure to change option in "Allowed HTTP methods" and select only "POST" HTTP method.  Step 5. Create output binding Step 6.  Configuring output binding a:  Name of the entity variable to insert in CosmosDB. b:  Name of the collection where the entity will be inserted (see image in Step 1). c:  Partition Key  in case you need to define it.  d:  DataBase name in Cosmos DB (see image in Step 1). e:  ConnectionString. Step 7.   "Short" programming.... a: Entity variable referenced in Step 6. a b: Entity