Azure / azure-functions-java-worker

Java runtime and core types for Microsoft Azure Functions

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Durable Functions Support for Java

asavaritayal opened this issue · comments

New Feature - Looking for votes and/or user input to gauge traction.

Now that Functions for Java has hit GA, is there any chance that the development to support Durable Functions start soon ?

@fgoulet there isn't a plan in place yet. We're still gauging demand for the feature to be supported in Java. Any information about the scenario and/or DF pattern required would help us prioritize / inform the backlog. Please feel free to leave these as comments on the issue.

Any updates on the timeline for this? We currently have a customer scenario where we could use async http api pattern & durable function would have been the best way to implement it

We haven't heard a lot of customer requests for this yet. That said, we do have it in our backlog and will prioritize as we hear from customers. We will continue to use this github issue for tracking the feature - so please upvote and add scenarios here.

I'm currently discussing a scenario like this one (same philosophy, but for data integration of several legacy business processes) to handle thousands of XML files with various transforms but where XSLT 2.0 is required (and where JavaScript is not feasible since there is a very large Java codebase that can be re-used).

@kulkarnisonia16 Financial Services Industry is dominated by Java; this blocks large-scale adoption of DF in this vertical. Currently we are working on a pattern for the industry that we'd love to use DF as the orchestration for but will likely end up not doing so due to lack of Java support.

cc @kashimiz, @cgillum

Internal Tracking CSEF 205501

I would also like to see Java support for durable functions

It would be good at-least to start with at least function chaining or FanIn/Out

I would love to see more support for Java. The irony of asking a question like this is that the community that reads this question will generally come from a Microsoft / .NET technology background and won't see Java (or Go or Rust) as necessary or even recommended unless they happen to have recent or active experience with those languages.

We have a client with a legacy Java application running on pet VMs which exists solely to give access to a particular third-party JVM-based library. We are moving this into a Function App for reasons of management, scaling and cost. The legacy solution includes a lot of Java code to listen to a Service Bus queue and orchestrate threads, which the client has had to maintain and which we are now tearing out, since Function Apps does all the orchestration for us. However some of the jobs will run for a long time and so we need to break the work down, fan out and fan back in again. So durable functions would be very handy in this scenario. Without durable functions we are writing our own orchestration code.

This is very helpfull feature for java domain. We want this to be added

Hoping this is added soon--I could use it for java.

We are experimenting with what what we're calling a Franken App, where we run the JVM inside a .NET Function App. That gives us a managed orchestrator based on .NET support for Durable Functions, but we can still run the third-party Java library that we need.

At the moment it's a custom image which starts with mcr.microsoft.com/azure-functions/dotnet:3.0 and installs OpenJDK in it. An activity function creates a subprocess that starts java and runs a JAR that provides a command-line interface to the third-party library.

Spinning up a new JVM for each invocation is not ideal but gets the job done for our use case. Ideally I think we would have both the .NET and Java function workers running in the one Function App, so sticking with as much Microsoft code as possible even if we're re-assembling it in different ways.

@pacon-vib could you provide more details?

  1. What Java libraries are you using?
  2. Have you thought using jlink to shrink the size of the JVM runtime?
  3. How are you triggering the Java code from within the .NET code?

Hey @brunoborges

  1. The Java library is JasperReports.
  2. I'm not familiar with jlink but I just looked it up and that might be something cool for us to look into.
  3. We shell out to something like java -jar /path/to/jar <arguments go here>, and the main class in the JAR interprets those command-line arguments to call the right methods.

That's an interesting use case. What's the reason for using a Durable Function to trigger a report generation
inside the same Function App?

@brunoborges There's a web app where the user asks the system to generate hundreds of reports at once, and then waits until they are all done. It can take an hour if you only run say four at once. We would like to run those in parallel and then notify the web app when all the work is done. Each report might take between a few seconds and a few minutes to run, so we need something robust and patient to supervise them.

Was there a reason to not use a messaging system?

Could you elaborate on the messaging system? If I understand correctly we can use Service Bus to fan the work out, but if a task takes longer than the maximum timeout on a Service Bus message then we have no way of noticing or recovering from a task failing. Also we would need to write our own code to notice that all the work was finished and send the collated output back to the web app.

@cgillum Hey Chris, are you still planning to make a start on Java support for DF this summer?

https://twitter.com/cgillum/status/1379795118450896900?s=20

I would love to see native support of Java DF not something that is built on top of .NET.

I would love to see native support of Java DF not something that is built on top of .NET.

@jamespauly could you elaborate a bit on what you mean and what runtime/build/etc. issues you might be anticipating for a DF Java release? There might be multiple possible interpretations of what "native support of Jav DF" or "built on top of .NET" means and I want to make sure I'm understanding your intended interpretation. :)

@cgillum Sorry I misread an earlier post but if the java DF to come into preview I would love to start testing them.

I would love to see this feature.

commented

Any update on timelines for this feature would help.
I have multiple scenarios in which DF suits my workflows (Audit world, needs many chained functions based on some logic to flow through). DF support for Java would help me drive multiple such workflow development.

/cc @AnatoliB and @anthonychu as we'll want to discuss this further in our upcoming planning cycle

I could use this feature in many of my scenarios. Waiting eagerly for something to be done on it.

Durable Functions for Java has been released as a public preview!

Now that it's publicly available, we'd love to get your feedback to help shape the experience as we get it ready for GA. Issues, questions, and feedback can be provided to our GitHub repository at https://github.com/microsoft/durabletask-java.

Thanks for your feedback here and for your ongoing patience. We hope that you'll be productive and love using it. 😊

We are leveraging Azure Durable functions using Java and would like to understand about the GA timeline for it. Any timeline on it?