Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Local development story? #223

Closed
jbogard opened this issue Aug 15, 2018 · 290 comments
Closed

Local development story? #223

jbogard opened this issue Aug 15, 2018 · 290 comments

Comments

@jbogard
Copy link
Contributor

jbogard commented Aug 15, 2018

Trying to get an understanding of what the local development story is. RabbitMQ for example can be installed on a dev machine, or run as a Docker container. If I have development/build images that need Azure Service Bus, what's the story of getting a runnable instance locally?

@SeanFeldman
Copy link
Contributor

There's no story Jimmy. Either MSDN or another Azure subscription can be used to run on the real thing.

@jbogard
Copy link
Contributor Author

jbogard commented Aug 15, 2018

So what's the story there then? Each developer creates their own namespace? Picks an option that keeps them under the MSDN limit?

Or runs a shared namespace amongst the team? That would run into all the normal problems of shared dev resources.

@SeanFeldman
Copy link
Contributor

SeanFeldman commented Aug 15, 2018 via email

@andrewbadera
Copy link

andrewbadera commented Aug 15, 2018 via email

@SeanFeldman
Copy link
Contributor

Layer of abstraction for code, yes. Running code w/o exercising client/broker, no.
When working with ASB, you really should experience the "real thing".

@andrewbadera
Copy link

andrewbadera commented Aug 15, 2018 via email

@SeanFeldman
Copy link
Contributor

@andrewbadera and when integration test (if you have one) against ASB is failing, what are you going to do locally? Wouldn't you switch back to ASB from whatever you were running against? And now you have to deal with the "perks" of two different technologies.

@SeanFeldman
Copy link
Contributor

@andrewbadera don't get me wrong. I am not against layer of abstraction. I'm not a fan of replacing ASB with some other technology to emulate it.

@jbogard
Copy link
Contributor Author

jbogard commented Aug 15, 2018

Yeah, there are real differences between different messaging transports that directly affect development. I wouldn't want to swap for example ASB for "messages are files in a folder"

@mahic
Copy link

mahic commented Nov 8, 2018

This question is probably related to this feedback where @SeanFeldman also commented.

We do have the ability to run everyting dotnet core, redis, functions, sql server, storage and cosmosdb locally, but not servicebus, hence the number of votes on the feedback page. And the Service Bus On-Prem option suggested in the feedback doesn't really seem to be a in-sync option

@aidapsibr
Copy link

Yeah, just gonna put my voice here as well. No option isn't really a great selling point. This has downstream effects too with EventHubs which are incredibly useful, but at least I can simulate them by using Kafka protocol enabled hubs, but that pushes me away from functions. My option here is to have every dev in my org use their MSDN account to setup dev resources? Very tempting reason to not use Service Bus and go to Rabbit.

@ericsampson
Copy link

Thoughts @djrosanova ?

@arjunsol
Copy link

arjunsol commented Jan 3, 2019

It seems like utter nonsense to not be able to develop and run integration tests locally. At present I have to strip out and service bus bindings to test.

@PureKrome
Copy link

@arjunsol Can you use RabbitMQ for localhost dev and switch over to ASB for staging/prod ? Absolute PITA but ... a workaround.

@ggirard07
Copy link

@PureKrome do you mean for mocking purpose?
That mean 2 different implementations to maintain, right?

@PureKrome
Copy link

@ggirard07
localhost scenario == rabbitmq is like an emulator. It's not a mock as in .. the code does literally interact with it. It's a dependency.
staging/prod == ASB. so again, it's a dependency.

code has some abstraction for suscribe/publish and your application decides to leverage either RabbitMQ or ASB for your IEventBus.

That mean 2 different implementations to maintain, right?

Yes. Which is why i'm screaming internally. But when you have to ship something, you gotta work with the tools around you. So to me, switching between the two is far from ideal BUT it works. I got this from MS's NET-Microservices-Architecture-for-Containerized-NET-Applications-(Microsoft-eBook).

Also, I tried asking ClemensV about this on twitter a few days ago. Either I failed to communicate my question or we have a different opinion, on the matter.

... especially when there's emulators and images for Azure Storage / Sql or NoSql db's / Redis / Elastic Search / etc..

SIDE NOTE: also like how Udi Dahan said they use Sql Server as their EB for local/test with NServiceBus.SqlServer as their transport/too.

cc @jbogard - Can you fill us in, with how you/your team handled this scenario, plz?

@ericsampson
Copy link

It would probably be a lot closer to use a localhost AMQP1.0 broker for the mock @PureKrome ? Unless you were already thinking of the AMQP1.0 support in RabbitMQ server. There's another twitter thread discussing this topic here: https://twitter.com/jeremydmiller/status/1080496980168712192

@PureKrome
Copy link

It would probably be a lot closer to use a localhost AMQP1.0 broker

Um ... er .. all i've researched is using RabbitMQ and have no idea (yet) what this means with resepct to protocols/etc. All this time spent is being wasted (unfortunatly) getting the tooling and abstractions to work ... just to get a localhost dev story up-n-running. Man - this is 2019 and this should be a solved problem already :( These tools have been around for a while now. So much frustration :(

All I know is this:

  • We wish to leverage ASB for production. Code to do use ASB is nice and easy.
  • Do not wish to use ASB for localhost. No, we're not a plane. Now we need to use RabbitMQ (docker image + does same high level functionality as ASB). Now we also need to abstract over ASB and RMQ.

so - frustrating :(

@arjunsol
Copy link

arjunsol commented Jan 6, 2019

@PureKrome

I had thought of that, we're using FunctionMonkey to cut down on boiler plate. I'm unsure if I can make it play nicely.

https://functionmonkey.azurefromthetrenches.com/

@sampbarber
Copy link

It's possible to trigger a service bus trigger via http using the /admin route, (https://docs.microsoft.com/en-us/azure/azure-functions/functions-manually-run-non-http) though I haven't quite got the hang of serializing to a BrokeredMessage, this would be step 1 for me, as I could then just trigger my function via postman when running locally.

The second issue is that if you have a service bus triggered function and you don't provide a connection string the trigger will blow up. If there was a way round this that would be great. Maybe being able to switch out the type of trigger via configuration or suppressing the exception, but not sure if that's possible. Anyone else find a way of doing that?

@atrauzzi
Copy link

My accompanying Twitter thread.

Back in 2016/2017, I looked into a local emulation option for service bus as the company I was working at was in a position to need something like it. Today, I find myself in a similar situation again as we don't have the finances to waste, arbitrarily provisioning cloud resources for each developer and need a consistent and repeatable local development experience.

I didn't really get into it much back then, but feeling a bit more motivated now, I'm sadly seeing things that are a bit off-putting about how badly the message is being missed.
I'm going to recount my experience on this, I realize some of it will be reiterating references already mentioned. But by the end, my hope is that you'll understand why some could be frustrated by how this is being handled, how inconsistent it is and how false and even dismissive some of the official responses are coming off...


The first result most tend to find is this stackoverflow question which has an answer that's been accepted.

The answer points to this feedback forum question from 2012 with at the time of this comment, 149 votes. What galls me about the response is its sheer combined temerity and inaccuracy:

image

It has been seven years since 2012. The interest on this uservoice is strong enough to warrant further investigation, yet here's a followup with 68 votes of its own.


Today, I decided to ask again after taking the time to do a bit of light research, collating the signals actual users and the community have been trying to send to the service bus team.

The response?

image

Similar to a prior poster in this thread, when @clemensv was paged into the discussion by @cmatskas, the response was unhelpful and really, seemed to talk past me. It's a little less great in the prior thread from @PureKrome which even seems to get a bit condescending...

image

While I disagree with this quip on the basis of my own use case, all that can be considered beside the point - it again talks right past the concerns on the basis of a singular ideal.

I'm not sure what the service bus team is waiting for on this one or what would qualify as sufficient. Certainly, a lot has been done to dilute, defer, confuse or even outright dismiss demand for this feature from multiple inquiries fielded seemingly out of hand in multiple forums.

From what I'm reading, I think when it comes to a local service bus emulator, it's definitely at a point that warrants action. If it really and truly is the worst idea possible in this context, do us all a favour and put a clear and official explanation in the service bus documentation as to why we shouldn't want a local emulator and what our alternative should be on Azure, specifically for topics.

Finally, I also think the responses so far are inconsistent both as they pertain to my perception of a modern-Microsoft, but also what many people value as a first class, competitive option.

@glucaci
Copy link

glucaci commented May 20, 2019

"No local dev for anything of serious complexity"... hmm... Kafka can be hosted in a container.

Maybe can someone give us a technical explanation why this is not possible, or maybe they want to be so.

@atrauzzi
Copy link

atrauzzi commented May 22, 2019

A nice little update today...

image

Sending good thoughts in the hopes that they find a way to make this happen soon!

@abezverkov
Copy link

This is the 3rd time/company have been looking in to this very thing. How to do local development and integration testing with ASB. Every other part of the stack can be run locally in a container, except this. I would be great to get something like Azurite that is API compatible and containerized.

@glucaci
Copy link

glucaci commented Oct 17, 2019

Until then you can try this https://github.com/SwissLife-OSS/squadron

@open-collar
Copy link

It would be very useful to have this when working offline or as part of our unit testing/integration testing systems.

@mgressman
Copy link

image

This just amazes me.

I don't know how many times I have been in a disconnected situation (e.g. 14 hour plane flight overseas) where I would love to get some of my development work done but can't because somebody, somewhere decides to take that kind of a stance.

Can I work around it or on something besides the ASB part? Sure. But why should I have to be told what I can and can't work on based on my connected status.

@gayankanishka
Copy link

It would be really really helpful to have an Azure service bus emulator.

@Saglodha
Copy link

Hello Everyone,

We’re excited to share that the much-anticipated Event Hubs emulator is now live! The first version was launched today. You can find more details here. Our team has put in a tremendous amount of effort over the past few months to make this happen, and we’re eager to hear your thoughts on it.

That being said, we’re still working on the emulator for Service Bus. We currently expect to have an initial version ready by the end of the year.

We deeply appreciate your patience and eagerly await your feedback!

@razvangoga
Copy link

the links in your announcement are broken.... might wanna recheck them in incognito

@Saglodha
Copy link

the links in your announcement are broken.... might wanna recheck them in incognito

Links should be fixed now, kindly retry and let me know if you still face any issues. @razvangoga

@jabrena
Copy link

jabrena commented May 21, 2024

When the event-hub with Kafka protocol support?

@murbanowicz
Copy link

@Saglodha is there any place we can follow up on some updates or you will update here? It is really long awaited piece of software, so we would be happy to know if we can expect some sort of alpha/beta testing etc soon?

@Saglodha
Copy link

When the event-hub with Kafka protocol support?

@jabrena - We're currently working on introducing Kafka support in Event Hubs emulator by end of CY24. I would keep this forum updated with future updates.

@Saglodha
Copy link

Saglodha commented Sep 20, 2024

@Saglodha is there any place we can follow up on some updates or you will update here? It is really long awaited piece of software, so we would be happy to know if we can expect some sort of alpha/beta testing etc soon?

@murbanowicz - Thank you for your patience. I would continue to share future updates in this forum. Our team has been diligently working on Service Bus emulator, and we are aiming for a release by the end of CY24.

@mxsdev
Copy link

mxsdev commented Sep 23, 2024

Hey folks, I thought this would be a fun side project so I made LocalSandbox, a free and open source azure emulator that supports azure service bus.

It currently supports sessions, dead-lettering, subqueues, scheduled messages, and more. I've tested it with both the official node.js SDK and the official c# service bus SDK.

Would love to get thoughts on it! I'm also open to creating emulators for more services if there's interest.

@Lobosque
Copy link

Lobosque commented Nov 4, 2024

@mxsdev you did a great job with LocalSandbox and it worked very well for the use cases where I have full control over the client used to connect to the Service Bus (emulator)

The problem we have right now is working with Azure Functions Input and Output bindings for service bus, which has no way of controlling the client used underneath to connect to the Service Bus.
@Saglodha with the officially Microsoft supported Service Bus Emulator that is about to come, will it be possible to use it with Azure Function bindings?

@tlunsfordCXP
Copy link

I just happened across Microsoft's Azure Service Bus Emulator package. Coincidentally, the first and only tag was published yesterday:

https://mcr.microsoft.com/en-us/artifact/mar/azure-messaging/servicebus-emulator/about

Haven't tried using it yet. 🤞

@Saglodha
Copy link

@tlunsfordCXP / Everyone,

🎉 Guess what! Just moments before our big announcement, you’ve stumbled upon the right package.

On behalf of our whole team, I am beyond thrilled to share this with you. This year at Ignite, we have revealed two highly anticipated features: the Service Bus emulator and Kafka support in the Event Hubs emulator. 🚀

Check out our announcement blogs:

Behind the scenes, our team has poured their heart and soul into making these emulators a reality, and now, we eagerly await your feedback. Thank you for your patience and support. We can't wait to hear from you!

Best regards,
Team Azure Messaging

@EldertGrootenboer
Copy link
Contributor

EldertGrootenboer commented Nov 19, 2024

We are really excited to have hit this milestone and want to thank everyone for your feedback! Also, kudos to @Saglodha and the entire team that have been working on making this possible. We will close this issue now, however we look forward to your feedback on the local emulators through https://github.com/Azure/azure-service-bus-emulator-installer and https://github.com/Azure/azure-event-hubs-emulator-installer.

@johnwatson484
Copy link

Genuinely never been so emotional about a GitHub issue being closed...

Great work team, emulator is life changing!

@PureKrome
Copy link

This thread is like:

@atrauzzi
Copy link

Was excited to hear about the emulator the other day, but I couldn't help thinking it would come with a catch.

Lo' and behold, the fly in the ointment is sitting right at the top... I hate to do this, but what was the reasoning for having the emulator depend on mssql?

This isn't 2016, guys. At least let it support other RDBMS. But ideally, you should drop the need for one altogether.

Are we going to have to wait another twelve years before the emulator can drop this heavy handed dependency?
Is the Service Bus team really this out of touch with the state of the ecosystem that this couldn't have been flagged earlier on?

🤦

@GaTechThomas
Copy link

Was excited to hear about the emulator the other day, but I couldn't help thinking it would come with a catch.

Lo' and behold, the fly in the ointment is sitting right at the top... I hate to do this, but what was the reasoning for having the emulator depend on mssql?

This isn't 2016, guys. At least let it support other RDBMS. But ideally, you should drop the need for one altogether.

Are we going to have to wait another twelve years before the emulator can drop this heavy handed dependency? Is the Service Bus team really this out of touch with the state of the ecosystem that this couldn't have been flagged earlier on?

🤦

Some of us disagree with the sentiment and the attitude of this comment.

It's in a container, abstracted away. We should not care about implementation details if it works. Any turning off knobs not defined as part of the interface are "at your own risk". It's also not meant for production environments, at all. Enjoy the convenience. Or consider not using it.

@sean-feldman-sh
Copy link

Change suggestions and issues can be raised using the dedicated issue tracker for the emulator at https://github.com/Azure/azure-service-bus-emulator-installer/issues. Keep it civil. There's no need in drama. Snarky comments will not speed up feature development.

@atrauzzi
Copy link

atrauzzi commented Dec 24, 2024

It's in a container, abstracted away. We should not care about implementation details if it works. Any turning off knobs not defined as part of the interface are "at your own risk". It's also not meant for production environments, at all. Enjoy the convenience. Or consider not using it.

You're (deliberately or unknowingly, I don't know) misusing the notion of abstraction afforded by containers. If it was truly "abstracted", it wouldn't manifest as an external dependency.

So inadvertently, you've reinforced my point. Thanks!

(Also, considering I was the one championing this long before many of you is kind of hilarious. Try reading through the history of this issue before jumping on the bandwagon, buddy.)

Too much MS mob mentality in this thread now.

@atrauzzi
Copy link

atrauzzi commented Dec 24, 2024

Change suggestions and issues can be raised using the dedicated issue tracker for the emulator at https://github.com/Azure/azure-service-bus-emulator-installer/issues. Keep it civil. There's no need in drama. Snarky comments will not speed up feature development.

No snarky comments were made Sean. Check Nicks youtube comment stream for others showing concern about the MSSQL kludge.

The ticket was already opened earlier today: Azure/azure-service-bus-emulator-installer#55

(Finally, before I peace out: Just because someone doesn't strap themselves to the front of a hype train doesn't necessarily give you a moral high-ground. Again, go back in the history of this very issue and you'll see me weathering the same kind of derision from people swearing an emulator wasn't necessary. See you all in 2036 for another episode of "told you so"! 🥳)

@SeanFeldman

This comment has been minimized.

@mwwhited
Copy link

mwwhited commented Dec 25, 2024

Too much MS mob mentality in this thread now.

I suggest you never use anything from the Apache Foundation... Especially Kafka. If you think this will be difficult for local development you ain't seen nothin'.

@atrauzzi
Copy link

atrauzzi commented Dec 25, 2024

Nobody is being passive aggressive Sean.

I'd appreciate it if you kept inappropriate psychoanalysis and your theories about me to yourself. You don't interact with me day to day to make such a broad claim.

This is not your platform to make it personal or take the opportunity to score points because you don't like what you see.

@leydel
Copy link

leydel commented Dec 25, 2024

I want a local service bus, I got a local service bus. How specifically it works shouldn't really matter (especially in this thread) and ultimately it gets the job done. Thanks to those who made this possible, and merry christmas :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests