quarkiverse / quarkus-google-cloud-services

Google Cloud Services Quarkus Extensions
https://docs.quarkiverse.io/quarkus-google-cloud-services/main/index.html
Apache License 2.0
54 stars 33 forks source link

New Feature Proposals: Firebase Emulator, PubSub Support, and PubSub Emulator #430

Closed zZHorizonZz closed 10 months ago

zZHorizonZz commented 1 year ago

I am submitting this issue to propose a set of enhancements that I believe could significantly improve the functionality and user experience within the community. The proposed features are as follows:

  1. Firebase Emulator Development Service: An emulator for Firebase could provide a valuable tool for developers. This service would enable developers to write tests or perform local testing without the need to establish a direct connection to Firebase, thereby streamlining the testing process.

  2. Pubsub Support for SmallRye Reactive Messaging: I am currently developing a prototype that utilizes SmallRye Reactive Messaging, and is based on current integrations such as Kafka, MQTT, and other similar platforms.

  3. Pubsub Emulator Development Service: A dedicated service for emulating PubSub could offer developers a more efficient and effective method of testing their PubSub-based systems.

(GCloud also provides emulators for Spanner, Bigtable but I'm not that familiar with these technologies, also there is an emulator for DataStore which is weird since it's firetstore and it's already provided via Firebase emulator)

I am confident that these enhancements would offer substantial benefits to the project. Given the time and opportunity, I would be keen on taking the responsibility to personally implement these proposed enhancements. I look forward to the community's feedback.

Tracking of progress:

loicmathieu commented 1 year ago

Hi @zZHorizonZz thanks for the proposals.

For Pubsub Support for SmallRye Reactive Messaging I have an early prototype but the PubSub connector for SmallRye Reactive messaging is no more maintained so it is not possible to inegrate it.

The other proposal are about providing dev services with the emulator, it's a good idea and you're not the first to talk about it but the first to open a feature request ;)

So if you want to work on devservices emulators I'll be happy to sponsor the change and help building it. You can start with one service, this will create the foundations to build it for the others.

zZHorizonZz commented 1 year ago

For Pubsub Support for SmallRye Reactive Messaging I have an early prototype but the PubSub connector for SmallRye Reactive messaging is no more maintained so it is not possible to inegrate it.

That's interesting I didn't know that I just assumed that there isn't enough interest from the community so they didn't integrated it to quarkus directly. But also in smallrye reactive messaging there is this so I thought it will be possible. What was the issue in prototype? In theory, we could create our own implementation based on that of gcp-pubsub and maintain it here.

So if you want to work on devservices emulators I'll be happy to sponsor the change and help building it. You can start with one service, this will create the foundations to build it for the others.

I will look into it.

Edit: Related to the pubsub reactive messaging I found this which answers that. It's unfortunate that there is nobody to maintain that. So I will stick with the plan creating my own implementation of pubsub reactive messaging.

zZHorizonZz commented 1 year ago

is no more maintained so it is not possible to inegrate it.

If there is an issue with this, I understand that a Quarkiverse extension should not rely on unmaintained code. In that case, I will create an extension that focuses solely on bringing the pubsub reactive messaging implementation to Quarkus.

zZHorizonZz commented 1 year ago

@loicmathieu, I have completed a basic prototype of the pubsub emulator. Additionally, I've attempted to refactor and rework the pubsub from SmallRye Reactive Messaging, and incorporate it directly into the extension. I believe that the pubsub code will not be difficult to maintain as it doesn't rely on extensive processors, unlike Kafka, for example. Also, as mentioned earlier, I have added a pubsub emulator dev service, which is incorporated in the integrations test and seems like it's working as it should. Repo

loicmathieu commented 1 year ago

@zZHorizonZz as I said there is already a prototype for Quarkus PubSub reactive messaging, it's here: https://github.com/quarkiverse/quarkus-google-cloud-services/pull/55

Maintaining a reactive messaging binding for a broker is out of scope of this extension pack (and I think out of scope of the Quarkiverse as SmallRye is used by more than Quarkus). I strongly advise you to get in touche with the SmallRye community about that as it's not the first time someone ask for it so they may reconsider it, you already found the right issues to discuss it.

Glad you have a prototype for emulator as dev services, I'll be happy to look at a PR for it :)

zZHorizonZz commented 1 year ago

@zZHorizonZz as I said there is already a prototype for Quarkus PubSub reactive messaging, it's here: https://github.com/quarkiverse/quarkus-google-cloud-services/pull/55

Thanks.

Maintaining a reactive messaging binding for a broker is out of scope of this extension pack (and I think out of scope of the Quarkiverse as SmallRye is used by more than Quarkus). I strongly advise you to get in touche with the SmallRye community about that as it's not the first time someone ask for it so they may reconsider it, you already found the right issues to discuss it.

Yeah, I'm considering this option, thanks for the recommendations.

Glad you have a prototype for emulator as dev services, I'll be happy to look at a PR for it :)

Yeah, I will start probably with pubsub, and in general, I think we could start with devservices that are already part of testcontainers since it will be easier, than for example firebase emulator.

loicmathieu commented 10 months ago

Closing it as the emulator that are listed here are all provided and the PubSub reactive messaging support cannot be provided.