Need advice about which tool to choose?Ask the StackShare community!

Azure Functions

+ 1

+ 1
Add tool

Azure Functions vs RabbitMQ: What are the differences?

What is Azure Functions? Listen and react to events across your stack. Azure Functions is an event driven, compute-on-demand experience that extends the existing Azure application platform with capabilities to implement code triggered by events occurring in virtually any Azure or 3rd party service as well as on-premises systems.

What is RabbitMQ? A messaging broker - an intermediary for messaging. RabbitMQ gives your applications a common platform to send and receive messages, and your messages a safe place to live until received.

Azure Functions belongs to "Serverless / Task Processing" category of the tech stack, while RabbitMQ can be primarily classified under "Message Queue".

Some of the features offered by Azure Functions are:

  • Easily schedule event-driven tasks across services
  • Expose Functions as HTTP API endpoints
  • Scale Functions based on customer demand

On the other hand, RabbitMQ provides the following key features:

  • Robust messaging for applications
  • Easy to use
  • Runs on all major operating systems

"Pay only when invoked" is the top reason why over 7 developers like Azure Functions, while over 203 developers mention "It's fast and it works with good metrics/monitoring" as the leading cause for choosing RabbitMQ.

RabbitMQ is an open source tool with 5.95K GitHub stars and 1.78K GitHub forks. Here's a link to RabbitMQ's open source repository on GitHub.

According to the StackShare community, RabbitMQ has a broader approval, being mentioned in 940 company stacks & 548 developers stacks; compared to Azure Functions, which is listed in 30 company stacks and 22 developer stacks.

Advice on Azure Functions and RabbitMQ
Needs advice

I am just a beginner at these two technologies.

Problem statement: I am getting lakh of users from the sequel server for whom I need to create caches in MongoDB by making different REST API requests.

Here these users can be treated as messages. Each REST API request is a task.

I am confused about whether I should go for RabbitMQ alone or Celery.

If I have to go with RabbitMQ, I prefer to use python with Pika module. But the challenge with Pika is, it is not thread-safe. So I am not finding a way to execute a lakh of API requests in parallel using multiple threads using Pika.

If I have to go with Celery, I don't know how I can achieve better scalability in executing these API requests in parallel.

See more
Replies (1)

For large amounts of small tasks and caches I have had good luck with Redis and RQ. I have not personally used celery but I am fairly sure it would scale well, and I have not used RabbitMQ for anything besides communication between services. If you prefer python my suggestions should feel comfortable.

Sorry I do not have a more information

See more
Meili Triantafyllidi
Software engineer at Digital Science | 5 upvotes 路 103.2K views
Needs advice
Amazon SQS

Hi, we are in a ZMQ set up in a push/pull pattern, and we currently start to have more traffic and cases that the service is unavailable or stuck. We want to: * Not loose messages in services outages * Safely restart service without losing messages (ZeroMQ seems to need to close the socket in the receiver before restart manually)

Do you have experience with this setup with ZeroMQ? Would you suggest RabbitMQ or Amazon SQS (we are in AWS setup) instead? Something else?

Thank you for your time

See more
Replies (1)
Shishir Pandey

ZeroMQ is fast but you need to build build reliability yourself. There are a number of patterns described in the zeromq guide. I have used RabbitMQ before which gives lot of functionality out of the box, you can probably use the worker queues example from the tutorial, it can also persists messages in the queue.

I haven't used Amazon SQS before. Another tool you could use is Kafka.

See more
Andr茅 Almeida
Technology Manager at GS1 Portugal - Codipor | 5 upvotes 路 104K views
Needs advice
Azure Service Bus

Hello dear developers, our company is starting a new project for a new Web App, and we are currently designing the Architecture (we will be using .NET Core). We want to embark on something new, so we are thinking about migrating from a monolithic perspective to a microservices perspective. We wish to containerize those microservices and make them independent from each other. Is it the best way for microservices to communicate with each other via ESB, or is there a new way of doing this? Maybe complementing with an API Gateway? Can you recommend something else different than the two tools I provided?

We want something good for Cost/Benefit; performance should be high too (but not the primary constraint).

Thank you very much in advance :)

See more
Replies (2)

A Pro of Azure Service Bus is reliability and persistence: you can send message when receiver is offline; receiver can read it when it back online. A Cons is costs and message size. You can consider also SignalR

See more
Matt Madzia

There are many different messaging frameworks available for IPC use. It's not really a question of how "new" the technology is, but what you need it to do. Azure Service Bus can be a great service to use, but it can also take a lot of effort to administrate and maintain that can make it costly to use unless you need the more advanced features it offers for routing, sequencing, delivery, etc. I would recommend checking out this link to get a basic idea of different messaging architectures. These only cover Azure services, but there are many other solutions that use similar architectural models.

See more
Decisions about Azure Functions and RabbitMQ
Mickael Alliel
DevOps Engineer at Rookout | 4 upvotes 路 172.6K views

In addition to being a lot cheaper, Google Cloud Pub/Sub allowed us to not worry about maintaining any more infrastructure that needed.

We moved from a self-hosted RabbitMQ over to CloudAMQP and decided that since we use GCP anyway, why not try their managed PubSub?

It is one of the better decisions that we made, and we can just focus about building more important stuff!

See more
Get Advice from developers at your company using Private StackShare. Sign up for Private StackShare.
Learn More
Pros of Azure Functions
Pros of RabbitMQ
  • 12
    Pay only when invoked
  • 8
    Great developer experience for C#
  • 6
    Multiple languages supported
  • 5
    Great debugging support
  • 2
    Poor developer experience for C#
  • 2
    Can be used as lightweight https service
  • 2
    Easy scalability
  • 1
    Azure component events for Storage, services etc
  • 1
    Event driven
  • 1
  • 226
    It's fast and it works with good metrics/monitoring
  • 79
    Ease of configuration
  • 57
    I like the admin interface
  • 49
    Easy to set-up and start with
  • 20
  • 18
    Intuitive work through python
  • 18
    Standard protocols
  • 10
    Written primarily in Erlang
  • 7
    Simply superb
  • 6
    Completeness of messaging patterns
  • 3
  • 3
    Scales to 1 million messages per second
  • 2
  • 2
    Supports AMQP
  • 2
    Better than most traditional queue based message broker
  • 1
    High performance
  • 1
  • 1
  • 1
    Inubit Integration
  • 1
    Clear documentation with different scripting language
  • 1
    Great ui
  • 1
    Runs on Open Telecom Platform
  • 1
    Better routing system
  • 1
    Supports MQTT

Sign up to add or upvote prosMake informed product decisions

Cons of Azure Functions
Cons of RabbitMQ
    Be the first to leave a con
    • 9
      Too complicated cluster/HA config and management
    • 6
      Needs Erlang runtime. Need ops good with Erlang runtime
    • 5
      Configuration must be done first, not by your code
    • 4

    Sign up to add or upvote consMake informed product decisions

    - No public GitHub repository available -

    What is Azure Functions?

    Azure Functions is an event driven, compute-on-demand experience that extends the existing Azure application platform with capabilities to implement code triggered by events occurring in virtually any Azure or 3rd party service as well as on-premises systems.

    What is RabbitMQ?

    RabbitMQ gives your applications a common platform to send and receive messages, and your messages a safe place to live until received.

    Need advice about which tool to choose?Ask the StackShare community!

    What companies use Azure Functions?
    What companies use RabbitMQ?
    See which teams inside your own company are using Azure Functions or RabbitMQ.
    Sign up for Private StackShareLearn More

    Sign up to get full access to all the companiesMake informed product decisions

    What tools integrate with Azure Functions?
    What tools integrate with RabbitMQ?

    Sign up to get full access to all the tool integrationsMake informed product decisions

    Blog Posts

    What are some alternatives to Azure Functions and RabbitMQ?
    AWS Lambda
    AWS Lambda is a compute service that runs your code in response to events and automatically manages the underlying compute resources for you. You can use AWS Lambda to extend other AWS services with custom logic, or create your own back-end services that operate at AWS scale, performance, and security.
    Kubernetes is an open source orchestration system for Docker containers. It handles scheduling onto nodes in a compute cluster and actively manages workloads to ensure that their state matches the users declared intentions.
    Build applications comprised of microservices that run in response to events, auto-scale for you, and only charge you when they run. This lowers the total cost of maintaining your apps, enabling you to build more logic, faster. The Framework uses new event-driven compute services, like AWS Lambda, Google CloudFunctions, and more.
    Cloud Functions for Firebase
    Cloud Functions for Firebase lets you create functions that are triggered by Firebase products, such as changes to data in the Realtime Database, uploads to Cloud Storage, new user sign ups via Authentication, and conversion events in Analytics.
    Google Cloud Functions
    Construct applications from bite-sized business logic billed to the nearest 100 milliseconds, only while your code is running
    See all alternatives
    Reviews of Azure Functions and RabbitMQ
    Review of

    I developed one of the largest queue based medical results delivery systems in the world, 18,000+ queues and still growing over a decade later all using MQSeries, later called Websphere MQ. When I left that company I started using RabbitMQ after doing some research on free offerings.. it works brilliantly and is incredibly flexible from small scale single instance use to large scale multi-server - multi-site architectures.

    If you can think in queues then RabbitMQ should be a viable solution for integrating disparate systems.

    Review of
    Azure Functions

    Poor developer experience

    How developers use Azure Functions and RabbitMQ
    Cloudify uses

    The poster child for scalable messaging systems, RabbitMQ has been used in countless large scale systems as the messaging backbone of any large cluster, and has proven itself time and again in many production settings.

    Chris Saylor uses

    Rabbit acts as our coordinator for all actions that happen during game time. All worker containers connect to rabbit in order to receive game events and emit their own events when applicable.

    Clarabridge Engage uses

    Used as central Message Broker; off-loading tasks to be executed asynchronous, used as communication tool between different microservices, used as tool to handle peaks in incoming data, etc.

    Analytical Informatics uses

    RabbitMQ is the enterprise message bus for our platform, providing infrastructure for managing our ETL queues, real-time event notifications for applications, and audit logging.

    Equinix-metal uses

    RabbitMQ is an all purpose queuing service for our stack. We use it for user facing jobs as well as keeping track of behind the scenes jobs.

    Yonas Tesh uses
    Azure Functions

    I used Azure functions as part of an integration service when creating a bulk insert module in azure.