Azure functions samples in Java

This repository contains samples which show the usage of Azure Functions in Java for the below scenarios.

Scenario Description
HttpTrigger Basic HttpTrigger and FixedDelayRetry with HttpTrigger.
BlobTrigger BlobTrigger, read blob using BlobInput binding and output to blob using BlobOutput binding.
CosmosDBTrigger CosmosDBTrigger, read cosmos DB entries with CosmosDBInput binding and output to cosmos DB CosmosDBOutput binding.
TimerTrigger Basic periodic TimerTrigger.
EventGridTrigger EventGridTrigger and send event to Event Grid using EventGridOutput binding.
EventHubTrigger EventHubTrigger for message received in event grid and output to event grid using EventHubOutput binding.
KafkaTrigger KafkaTrigger with KafkaOutput and QueueOutput example.
QueueTrigger QueueTrigger to read content from queue and output to queue using QueueOutput binding.
ServiceBusQueueTrigger ServiceBusQueueTrigger to read message from a queue in service bus and output to service bus queue using ServiceBusQueueOutput binding.
ServiceBusTopicTrigger ServiceBusTopicTrigger to read message from a topic in service bus and output to service bus topic using ServiceBusTopicOutput binding.
Table function Basic example to read and write to table in Azure Storage using TableInput and TableOutput binding.
Durable function Durable function example to start an orchestration and follow activity chaining.
Distributed tracing Distributed tracing example that adds entries to a MYSQL database via JDBC, adds custom metrics to the Application Insights and outputs to cosmos DB CosmosDBOutput binding.
Dependency injection - Dagger Dagger example that shows the usage of dependency injection with azure functions.
Dependency injection - Guice Google guice example that shows the usage of dependency injection with azure functions.
Spring cloud Usage of Spring cloud to develop a function.

Contents

Outlines the contents of this repository. It helps users navigate the codebase, build configuration and any related assets.

File/folder Description
triggers-bindings Triggers and bindings available in Azure functions.
dependency-injection Integration of Google Guice and Dagger with Azure Functions.
spring-cloud Usage of Spring cloud to develop a Java function.
distributed-tracing Sample that shows the usage of distributed tracing coupled with azure functions.
durable-function Durable function example to run orchestrations and activities.
.gitignore Define what to ignore at commit time.
CHANGELOG.md List of changes to the sample.
CONTRIBUTING.md Guidelines for contributing to the sample.
README.md This README file.
LICENSE.txt The license for the sample.

Prerequisites

  • Gradle 4.10+
  • Latest Function Core Tools
  • Azure CLI. This plugin use Azure CLI for authentication, please make sure you have Azure CLI installed and logged in.

Setup

  • Please refer individual directories for sample specific setup. Some common setup instructions are provided below.

  •   az login
      az account set -s <your subscription id>
    
  • Update the Application settings in Azure portal with the required parameters as below

    • AzureWebJobsStorage: Connection string to your storage account
    • CosmosDBDatabaseName: Cosmos database name. Example: ItemCollectionIn
    • CosmosDBCollectionName:Cosmos database collection name. Example: ItemDb
    • AzureWebJobsCosmosDBConnectionString: Connection string to your Cosmos database
    • AzureWebJobsEventGridOutputBindingTopicUriString: Event Grid URI
    • AzureWebJobsEventGridOutputBindingTopicKeyString: Event Grid string
    • AzureWebJobsEventHubSender, AzureWebJobsEventHubSender_2 : Event hub connection string
    • AzureWebJobsServiceBus: Service bus connection string
    • SBQueueName: Service bus queue name. Example: test-input-java
    • SBTopicName: Service bus topic name. Example: javaworkercitopic2
    • SBTopicSubName: Service bus topic name. Example: javaworkercisub
    • Documentation on how to manage connection strings and access keys
  • Update host.json with the right extension bundle version. V3 - [1.*, 2.0.0) and V4 - [2.*, 3.0.0)

Running the sample

./mvnw clean package azure-functions:run
./gradlew clean azureFunctionsRun

Deploy the sample on Azure

./mvnw clean package azure-functions:deploy
./gradlew clean azureFunctionsDeploy

NOTE: please replace '/' with '\' when you are running on windows.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Telemetry

This project collects usage data and sends it to Microsoft to help improve our products and services. Read Microsoft's privacy statement to learn more. If you would like to opt out of sending telemetry data to Microsoft, you can set allowTelemetry to false in the plugin configuration. Please read our document to find more details about allowTelemetry.