Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Azure Service Bus in local

I am working with Azure Service Bus Topics and Subscriptions. It's being used to send control messages across the application. The message listeners (subscribers) are running in a worker role and they are picking up the messages and processing the request. Each message in the bus can be picked up by only once, even if there are multiple listeners running simultaneously.

There is no issue in using the Service Bus; however we are facing some issues while debugging/testing the application in local. We have 2 service bus, one for the cloud and one for local debugging. Now if multiple people are debugging the application simultaneously, the message is being picked by only one of the system (at random). This is the intended behavior, but it's causing a nuisance while debugging.

Is there any way how I can use a local emulator for the Service Bus? I did some research but I couldn't find any reliable solution for this. Is there any way how we debug the application in isolation?

like image 512
Pratik Bhattacharya Avatar asked May 04 '16 16:05

Pratik Bhattacharya


People also ask

Can you run Azure Service Bus on premise?

Azure Service Bus Relay With Azure Relay—previously known as Service Bus Relay—you can safely subject your on-premises services and applications to the public cloud and other on-premises environments without drastically altering your corporate network infrastructure or introducing firewall holes.

Where can I use Azure Service Bus?

Azure Service Bus is a messaging service on cloud used to connect any applications, devices, and services running in the cloud to any other applications or services. As a result, it acts as a messaging backbone for applications available in the cloud or across any devices.

How do you implement Azure Service Bus?

Create a queue in the Azure portalOn the Service Bus Namespace page, select Queues in the left navigational menu. On the Queues page, select + Queue on the toolbar. Enter a name for the queue, and leave the other values with their defaults. Now, select Create.

Is Azure Service Bus a message broker?

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: Load-balancing work across competing workers.


3 Answers

Azure Service Bus is a broker with competing consumers. Having multiple developers debugging using the same namespace will be be tough (message lock duration expired and another developer that happened to be debugging got that message). I would suggest to look into a namespace per developer. With MSDN license you're given enough Azure credit to have each developer work in a "sandboxed" namespace. As to how to get it working, you can read from a configuration file, environment variable, etc.

On the ASB for Windows Server - currently it's on version 1.1 where Azure SB is on 3+. Hosted version will be always ahead of the on-premises. Something to consider.

like image 183
Sean Feldman Avatar answered Sep 17 '22 14:09

Sean Feldman


Unfortunately, there is no Azure SB local emulator. That was asked before, and you can try to use Service Bus for Windows Server but it is slightly behind the cloud service in terms of features support/functionality, etc. Still, it supports Azure SDK, for example. MSDN link for SB for WS.

like image 26
Alex Belotserkovskiy Avatar answered Sep 17 '22 14:09

Alex Belotserkovskiy


The problem should probably be solved by abstracting the service bus implementation so that it can be swapped for something that you actually can run locally (or in memory). I would suggest not to re-invent that wheel though and choose a library like Masstransit https://masstransit-project.com.

like image 31
Dylan Lamers Avatar answered Sep 17 '22 14:09

Dylan Lamers