{"id":"822163df-d71a-4be7-9488-c11c0a0696e9","shortId":"N3Z8sU","kind":"skill","title":"azure-eventhub-java","tagline":"Build real-time streaming applications with Azure Event Hubs SDK for Java. Use when implementing event streaming, high-throughput data ingestion, or building event-driven architectures.","description":"# Azure Event Hubs SDK for Java\n\nBuild real-time streaming applications using the Azure Event Hubs SDK for Java.\n\n## Installation\n\n```xml\n<dependency>\n    <groupId>com.azure</groupId>\n    <artifactId>azure-messaging-eventhubs</artifactId>\n    <version>5.19.0</version>\n</dependency>\n\n<!-- For checkpoint store (production) -->\n<dependency>\n    <groupId>com.azure</groupId>\n    <artifactId>azure-messaging-eventhubs-checkpointstore-blob</artifactId>\n    <version>1.20.0</version>\n</dependency>\n```\n\n## Client Creation\n\n### EventHubProducerClient\n\n```java\nimport com.azure.messaging.eventhubs.EventHubProducerClient;\nimport com.azure.messaging.eventhubs.EventHubClientBuilder;\n\n// With connection string\nEventHubProducerClient producer = new EventHubClientBuilder()\n    .connectionString(\"<connection-string>\", \"<event-hub-name>\")\n    .buildProducerClient();\n\n// Full connection string with EntityPath\nEventHubProducerClient producer = new EventHubClientBuilder()\n    .connectionString(\"<connection-string-with-entity-path>\")\n    .buildProducerClient();\n```\n\n### With DefaultAzureCredential\n\n```java\nimport com.azure.identity.DefaultAzureCredentialBuilder;\n\nEventHubProducerClient producer = new EventHubClientBuilder()\n    .fullyQualifiedNamespace(\"<namespace>.servicebus.windows.net\")\n    .eventHubName(\"<event-hub-name>\")\n    .credential(new DefaultAzureCredentialBuilder().build())\n    .buildProducerClient();\n```\n\n### EventHubConsumerClient\n\n```java\nimport com.azure.messaging.eventhubs.EventHubConsumerClient;\n\nEventHubConsumerClient consumer = new EventHubClientBuilder()\n    .connectionString(\"<connection-string>\", \"<event-hub-name>\")\n    .consumerGroup(EventHubClientBuilder.DEFAULT_CONSUMER_GROUP_NAME)\n    .buildConsumerClient();\n```\n\n### Async Clients\n\n```java\nimport com.azure.messaging.eventhubs.EventHubProducerAsyncClient;\nimport com.azure.messaging.eventhubs.EventHubConsumerAsyncClient;\n\nEventHubProducerAsyncClient asyncProducer = new EventHubClientBuilder()\n    .connectionString(\"<connection-string>\", \"<event-hub-name>\")\n    .buildAsyncProducerClient();\n\nEventHubConsumerAsyncClient asyncConsumer = new EventHubClientBuilder()\n    .connectionString(\"<connection-string>\", \"<event-hub-name>\")\n    .consumerGroup(\"$Default\")\n    .buildAsyncConsumerClient();\n```\n\n## Core Patterns\n\n### Send Single Event\n\n```java\nimport com.azure.messaging.eventhubs.EventData;\n\nEventData eventData = new EventData(\"Hello, Event Hubs!\");\nproducer.send(Collections.singletonList(eventData));\n```\n\n### Send Event Batch\n\n```java\nimport com.azure.messaging.eventhubs.EventDataBatch;\nimport com.azure.messaging.eventhubs.models.CreateBatchOptions;\n\n// Create batch\nEventDataBatch batch = producer.createBatch();\n\n// Add events (returns false if batch is full)\nfor (int i = 0; i < 100; i++) {\n    EventData event = new EventData(\"Event \" + i);\n    if (!batch.tryAdd(event)) {\n        // Batch is full, send and create new batch\n        producer.send(batch);\n        batch = producer.createBatch();\n        batch.tryAdd(event);\n    }\n}\n\n// Send remaining events\nif (batch.getCount() > 0) {\n    producer.send(batch);\n}\n```\n\n### Send to Specific Partition\n\n```java\nCreateBatchOptions options = new CreateBatchOptions()\n    .setPartitionId(\"0\");\n\nEventDataBatch batch = producer.createBatch(options);\nbatch.tryAdd(new EventData(\"Partition 0 event\"));\nproducer.send(batch);\n```\n\n### Send with Partition Key\n\n```java\nCreateBatchOptions options = new CreateBatchOptions()\n    .setPartitionKey(\"customer-123\");\n\nEventDataBatch batch = producer.createBatch(options);\nbatch.tryAdd(new EventData(\"Customer event\"));\nproducer.send(batch);\n```\n\n### Event with Properties\n\n```java\nEventData event = new EventData(\"Order created\");\nevent.getProperties().put(\"orderId\", \"ORD-123\");\nevent.getProperties().put(\"customerId\", \"CUST-456\");\nevent.getProperties().put(\"priority\", 1);\n\nproducer.send(Collections.singletonList(event));\n```\n\n### Receive Events (Simple)\n\n```java\nimport com.azure.messaging.eventhubs.models.EventPosition;\nimport com.azure.messaging.eventhubs.models.PartitionEvent;\n\n// Receive from specific partition\nIterable<PartitionEvent> events = consumer.receiveFromPartition(\n    \"0\",                           // partitionId\n    10,                            // maxEvents\n    EventPosition.earliest(),      // startingPosition\n    Duration.ofSeconds(30)         // timeout\n);\n\nfor (PartitionEvent partitionEvent : events) {\n    EventData event = partitionEvent.getData();\n    System.out.println(\"Body: \" + event.getBodyAsString());\n    System.out.println(\"Sequence: \" + event.getSequenceNumber());\n    System.out.println(\"Offset: \" + event.getOffset());\n}\n```\n\n### EventProcessorClient (Production)\n\n```java\nimport com.azure.messaging.eventhubs.EventProcessorClient;\nimport com.azure.messaging.eventhubs.EventProcessorClientBuilder;\nimport com.azure.messaging.eventhubs.checkpointstore.blob.BlobCheckpointStore;\nimport com.azure.storage.blob.BlobContainerAsyncClient;\nimport com.azure.storage.blob.BlobContainerClientBuilder;\n\n// Create checkpoint store\nBlobContainerAsyncClient blobClient = new BlobContainerClientBuilder()\n    .connectionString(\"<storage-connection-string>\")\n    .containerName(\"checkpoints\")\n    .buildAsyncClient();\n\n// Create processor\nEventProcessorClient processor = new EventProcessorClientBuilder()\n    .connectionString(\"<eventhub-connection-string>\", \"<event-hub-name>\")\n    .consumerGroup(\"$Default\")\n    .checkpointStore(new BlobCheckpointStore(blobClient))\n    .processEvent(eventContext -> {\n        EventData event = eventContext.getEventData();\n        System.out.println(\"Processing: \" + event.getBodyAsString());\n        \n        // Checkpoint after processing\n        eventContext.updateCheckpoint();\n    })\n    .processError(errorContext -> {\n        System.err.println(\"Error: \" + errorContext.getThrowable().getMessage());\n        System.err.println(\"Partition: \" + errorContext.getPartitionContext().getPartitionId());\n    })\n    .buildEventProcessorClient();\n\n// Start processing\nprocessor.start();\n\n// Keep running...\nThread.sleep(Duration.ofMinutes(5).toMillis());\n\n// Stop gracefully\nprocessor.stop();\n```\n\n### Batch Processing\n\n```java\nEventProcessorClient processor = new EventProcessorClientBuilder()\n    .connectionString(\"<connection-string>\", \"<event-hub-name>\")\n    .consumerGroup(\"$Default\")\n    .checkpointStore(new BlobCheckpointStore(blobClient))\n    .processEventBatch(eventBatchContext -> {\n        List<EventData> events = eventBatchContext.getEvents();\n        System.out.printf(\"Received %d events%n\", events.size());\n        \n        for (EventData event : events) {\n            // Process each event\n            System.out.println(event.getBodyAsString());\n        }\n        \n        // Checkpoint after batch\n        eventBatchContext.updateCheckpoint();\n    }, 50) // maxBatchSize\n    .processError(errorContext -> {\n        System.err.println(\"Error: \" + errorContext.getThrowable());\n    })\n    .buildEventProcessorClient();\n```\n\n### Async Receiving\n\n```java\nasyncConsumer.receiveFromPartition(\"0\", EventPosition.latest())\n    .subscribe(\n        partitionEvent -> {\n            EventData event = partitionEvent.getData();\n            System.out.println(\"Received: \" + event.getBodyAsString());\n        },\n        error -> System.err.println(\"Error: \" + error),\n        () -> System.out.println(\"Complete\")\n    );\n```\n\n### Get Event Hub Properties\n\n```java\n// Get hub info\nEventHubProperties hubProps = producer.getEventHubProperties();\nSystem.out.println(\"Hub: \" + hubProps.getName());\nSystem.out.println(\"Partitions: \" + hubProps.getPartitionIds());\n\n// Get partition info\nPartitionProperties partitionProps = producer.getPartitionProperties(\"0\");\nSystem.out.println(\"Begin sequence: \" + partitionProps.getBeginningSequenceNumber());\nSystem.out.println(\"Last sequence: \" + partitionProps.getLastEnqueuedSequenceNumber());\nSystem.out.println(\"Last offset: \" + partitionProps.getLastEnqueuedOffset());\n```\n\n## Event Positions\n\n```java\n// Start from beginning\nEventPosition.earliest()\n\n// Start from end (new events only)\nEventPosition.latest()\n\n// From specific offset\nEventPosition.fromOffset(12345L)\n\n// From specific sequence number\nEventPosition.fromSequenceNumber(100L)\n\n// From specific time\nEventPosition.fromEnqueuedTime(Instant.now().minus(Duration.ofHours(1)))\n```\n\n## Error Handling\n\n```java\nimport com.azure.messaging.eventhubs.models.ErrorContext;\n\n.processError(errorContext -> {\n    Throwable error = errorContext.getThrowable();\n    String partitionId = errorContext.getPartitionContext().getPartitionId();\n    \n    if (error instanceof AmqpException) {\n        AmqpException amqpError = (AmqpException) error;\n        if (amqpError.isTransient()) {\n            System.out.println(\"Transient error, will retry\");\n        }\n    }\n    \n    System.err.printf(\"Error on partition %s: %s%n\", partitionId, error.getMessage());\n})\n```\n\n## Resource Cleanup\n\n```java\n// Always close clients\ntry {\n    producer.send(batch);\n} finally {\n    producer.close();\n}\n\n// Or use try-with-resources\ntry (EventHubProducerClient producer = new EventHubClientBuilder()\n        .connectionString(connectionString, eventHubName)\n        .buildProducerClient()) {\n    producer.send(events);\n}\n```\n\n## Environment Variables\n\n```bash\nEVENT_HUBS_CONNECTION_STRING=Endpoint=sb://<namespace>.servicebus.windows.net/;SharedAccessKeyName=...\nEVENT_HUBS_NAME=<event-hub-name>\nSTORAGE_CONNECTION_STRING=<for-checkpointing>\n```\n\n## Best Practices\n\n1. **Use EventProcessorClient**: For production, provides load balancing and checkpointing\n2. **Batch Events**: Use `EventDataBatch` for efficient sending\n3. **Partition Keys**: Use for ordering guarantees within a partition\n4. **Checkpointing**: Checkpoint after processing to avoid reprocessing\n5. **Error Handling**: Handle transient errors with retries\n6. **Close Clients**: Always close producer/consumer when done\n\n## Trigger Phrases\n\n- \"Event Hubs Java\"\n- \"event streaming Azure\"\n- \"real-time data ingestion\"\n- \"EventProcessorClient\"\n- \"event hub producer consumer\"\n- \"partition processing\"\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["azure","eventhub","java","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding"],"capabilities":["skill","source-sickn33","skill-azure-eventhub-java","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-eventhub-java","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34928 github stars · SKILL.md body (10,509 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T18:50:30.421Z","embedding":null,"createdAt":"2026-04-18T21:32:25.568Z","updatedAt":"2026-04-24T18:50:30.421Z","lastSeenAt":"2026-04-24T18:50:30.421Z","tsv":"'-123':262,288 '-456':293 '/;sharedaccesskeyname=...':624 '0':193,225,238,247,316,463,502 '1':297,547,633 '1.20.0':69 '10':318 '100':195 '100l':539 '12345l':533 '2':643 '3':651 '30':323 '4':661 '5':408,669 '5.19.0':61 '50':451 '6':677 'action':717 'add':182 'alway':589,680 'amqperror':567 'amqperror.istransient':571 'amqpexcept':565,566,568 'applic':10,45,711 'architectur':33 'ask':755 'async':130,459 'asyncconsum':144 'asyncconsumer.receivefrompartition':462 'asyncproduc':138 'avoid':667 'azur':2,12,34,48,58,64,692 'azure-eventhub-java':1 'azure-messaging-eventhub':57 'azure-messaging-eventhubs-checkpointstore-blob':63 'balanc':640 'bash':616 'batch':171,178,180,187,206,213,215,216,227,240,250,264,273,413,449,594,644 'batch.getcount':224 'batch.tryadd':204,218,243,267 'begin':504,520 'best':631 'blob':68 'blobcheckpointstor':376,425 'blobclient':358,377,426 'blobcontainerasynccli':357 'blobcontainerclientbuild':360 'bodi':333 'boundari':763 'build':5,29,40,113 'buildasynccli':364 'buildasyncconsumercli':150 'buildasyncproducercli':142 'buildconsumercli':129 'buildeventprocessorcli':400,458 'buildproducercli':86,97,114,611 'checkpoint':355,363,386,447,642,662,663 'checkpointstor':67,374,423 'clarif':757 'cleanup':587 'clear':730 'client':70,131,591,679 'close':590,678,681 'collections.singletonlist':167,299 'com.azure':56,62 'com.azure.identity.defaultazurecredentialbuilder':102 'com.azure.messaging.eventhubs.checkpointstore.blob.blobcheckpointstore':349 'com.azure.messaging.eventhubs.eventdata':158 'com.azure.messaging.eventhubs.eventdatabatch':174 'com.azure.messaging.eventhubs.eventhubclientbuilder':77 'com.azure.messaging.eventhubs.eventhubconsumerasyncclient':136 'com.azure.messaging.eventhubs.eventhubconsumerclient':118 'com.azure.messaging.eventhubs.eventhubproducerasyncclient':134 'com.azure.messaging.eventhubs.eventhubproducerclient':75 'com.azure.messaging.eventhubs.eventprocessorclient':345 'com.azure.messaging.eventhubs.eventprocessorclientbuilder':347 'com.azure.messaging.eventhubs.models.createbatchoptions':176 'com.azure.messaging.eventhubs.models.errorcontext':552 'com.azure.messaging.eventhubs.models.eventposition':306 'com.azure.messaging.eventhubs.models.partitionevent':308 'com.azure.storage.blob.blobcontainerasyncclient':351 'com.azure.storage.blob.blobcontainerclientbuilder':353 'complet':478 'connect':79,88,619,629 'connectionstr':85,96,123,141,147,361,371,420,608,609 'consum':120,126,702 'consumer.receivefrompartition':315 'consumergroup':124,148,372,421 'containernam':362 'core':151 'creat':177,211,283,354,365 'createbatchopt':233,236,256,259 'creation':71 'credenti':110 'criteria':766 'cust':292 'custom':261,270 'customerid':291 'd':434 'data':26,696 'default':149,373,422 'defaultazurecredenti':99 'defaultazurecredentialbuild':112 'describ':718,734 'done':684 'driven':32 'duration.ofhours':546 'duration.ofminutes':407 'duration.ofseconds':322 'effici':649 'end':524 'endpoint':621 'entitypath':91 'environ':614,746 'environment-specif':745 'error':393,456,473,475,476,548,556,563,569,574,578,670,674 'error.getmessage':585 'errorcontext':391,454,554 'errorcontext.getpartitioncontext':398,560 'errorcontext.getthrowable':394,457,557 'event':13,21,31,35,49,155,164,170,183,198,201,205,219,222,248,271,274,279,300,302,314,328,330,381,430,435,440,441,444,468,480,515,526,613,617,625,645,687,690,699 'event-driven':30 'event.getbodyasstring':334,385,446,472 'event.getoffset':340 'event.getproperties':284,289,294 'event.getsequencenumber':337 'eventbatchcontext':428 'eventbatchcontext.getevents':431 'eventbatchcontext.updatecheckpoint':450 'eventcontext':379 'eventcontext.geteventdata':382 'eventcontext.updatecheckpoint':389 'eventdata':159,160,162,168,197,200,245,269,278,281,329,380,439,467 'eventdatabatch':179,239,263,647 'eventhub':3,60,66 'eventhubclientbuild':84,95,106,122,140,146,607 'eventhubclientbuilder.default':125 'eventhubconsumerasynccli':143 'eventhubconsumercli':115,119 'eventhubnam':109,610 'eventhubproducerasynccli':137 'eventhubproducercli':72,81,92,103,604 'eventhubproperti':487 'eventposition.earliest':320,521 'eventposition.fromenqueuedtime':543 'eventposition.fromoffset':532 'eventposition.fromsequencenumber':538 'eventposition.latest':464,528 'eventprocessorcli':341,367,416,635,698 'eventprocessorclientbuild':370,419 'events.size':437 'execut':713 'expert':751 'fals':185 'final':595 'full':87,189,208 'fullyqualifiednamespac':107 'get':479,484,496 'getmessag':395 'getpartitionid':399,561 'grace':411 'group':127 'guarante':657 'handl':549,671,672 'hello':163 'high':24 'high-throughput':23 'hub':14,36,50,165,481,485,491,618,626,688,700 'hubprop':488 'hubprops.getname':492 'hubprops.getpartitionids':495 'implement':20 'import':74,76,101,117,133,135,157,173,175,305,307,344,346,348,350,352,551 'info':486,498 'ingest':27,697 'input':760 'instal':54 'instanceof':564 'instant.now':544 'int':191 'iter':313 'java':4,17,39,53,73,100,116,132,156,172,232,255,277,304,343,415,461,483,517,550,588,689 'keep':404 'key':254,653 'last':508,512 'limit':722 'list':429 'load':639 'match':731 'maxbatchs':452 'maxev':319 'messag':59,65 'minus':545 'miss':768 'n':436,583 'name':128,627 'new':83,94,105,111,121,139,145,161,199,212,235,244,258,268,280,359,369,375,418,424,525,606 'number':537 'offset':339,513,531 'option':234,242,257,266 'ord':287 'order':282,656 'orderid':286 'output':740 'overview':721 'partit':231,246,253,312,397,494,497,580,652,660,703 'partitionev':326,327,466 'partitionevent.getdata':331,469 'partitionid':317,559,584 'partitionprop':500 'partitionproperti':499 'partitionprops.getbeginningsequencenumber':506 'partitionprops.getlastenqueuedoffset':514 'partitionprops.getlastenqueuedsequencenumber':510 'pattern':152 'permiss':761 'phrase':686 'posit':516 'practic':632 'prioriti':296 'process':384,388,402,414,442,665,704 'processerror':390,453,553 'processev':378 'processeventbatch':427 'processor':366,368,417 'processor.start':403 'processor.stop':412 'produc':82,93,104,605,701 'producer.close':596 'producer.createbatch':181,217,241,265 'producer.geteventhubproperties':489 'producer.getpartitionproperties':501 'producer.send':166,214,226,249,272,298,593,612 'producer/consumer':682 'product':342,637 'properti':276,482 'provid':638 'put':285,290,295 'real':7,42,694 'real-tim':6,41,693 'receiv':301,309,433,460,471 'remain':221 'reprocess':668 'requir':759 'resourc':586,602 'retri':576,676 'return':184 'review':752 'run':405 'safeti':762 'scope':733 'sdk':15,37,51 'send':153,169,209,220,228,251,650 'sequenc':336,505,509,536 'servicebus.windows.net':108,623 'servicebus.windows.net/;sharedaccesskeyname=...':622 'setpartitionid':237 'setpartitionkey':260 'simpl':303 'singl':154 'skill':709,725 'skill-azure-eventhub-java' 'source-sickn33' 'specif':230,311,530,535,541,747 'start':401,518,522 'startingposit':321 'stop':410,753 'storag':628 'store':356 'stream':9,22,44,691 'string':80,89,558,620,630 'subscrib':465 'substitut':743 'success':765 'system.err.printf':577 'system.err.println':392,396,455,474 'system.out.printf':432 'system.out.println':332,335,338,383,445,470,477,490,493,503,507,511,572 'task':729 'test':749 'thread.sleep':406 'throughput':25 'throwabl':555 'time':8,43,542,695 'timeout':324 'tomilli':409 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'transient':573,673 'treat':738 'tri':592,600,603 'trigger':685 'try-with-resourc':599 'use':18,46,598,634,646,654,707,723 'valid':748 'variabl':615 'within':658 'workflow':715 'xml':55","prices":[{"id":"f0c2d731-57b6-4b76-9c96-34150c79fca2","listingId":"822163df-d71a-4be7-9488-c11c0a0696e9","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:32:25.568Z"}],"sources":[{"listingId":"822163df-d71a-4be7-9488-c11c0a0696e9","source":"github","sourceId":"sickn33/antigravity-awesome-skills/azure-eventhub-java","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-eventhub-java","isPrimary":false,"firstSeenAt":"2026-04-18T21:32:25.568Z","lastSeenAt":"2026-04-24T18:50:30.421Z"}],"details":{"listingId":"822163df-d71a-4be7-9488-c11c0a0696e9","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"azure-eventhub-java","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34928,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-24T06:41:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"4d3319fbf381f8c878e2e52545962c7c01a6a2b6","skill_md_path":"skills/azure-eventhub-java/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-eventhub-java"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"azure-eventhub-java","description":"Build real-time streaming applications with Azure Event Hubs SDK for Java. Use when implementing event streaming, high-throughput data ingestion, or building event-driven architectures."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-eventhub-java"},"updatedAt":"2026-04-24T18:50:30.421Z"}}