-
Do not remove
x-opt-partition-key
message annotation when publishing events. If event is received from an Event Hub, it may containx-opt-partition-key
message annotation. If this event is published to another Event Hub, previous version of the Event Hubs SDK did not pass this annotation to the next Event Hub. Starting with this version:- if the event is sent with
SendOptions
orCreateBatchOptions
containingnull
partition key, the existingx-opt-partition-key
message annotation will be used when publishing the event. This is a new behavior. - if the event is sent with
SendOptions
orCreateBatchOptions
containing non-null partition key, this partition key will be used. This behavior did not change.
If you relied on the previous behavior, make sure to clear the
x-opt-partition-key
message annotation before re-sending the event. (#43039) - if the event is sent with
- Set partition key in addition to partition id when publishing events with
EventHubsBufferedProducerClient
. (#43039) - Do not remove
x-opt-sequence-number
,x-opt-offset
,x-opt-enqueued-time
,x-opt-publisher
message annotations when re-sending events received from another Event Hub. Message annotations should not be modified by the SDK and Event Hubs will overwrite these values when the event is published. (#43039)
- Upgraded
azure-core
from1.53.0
to version1.54.1
. - Upgraded
azure-core-amqp
from2.9.10
to version2.9.12
.
- Upgraded
azure-core
from1.52.0
to version1.53.0
. - Upgraded
azure-core-amqp
from2.9.9
to version2.9.10
.
- Integrated RequestResponseChannelCache (CBS, Management channel cache) and ReactorSessionCache, these caches are activated when V2 stack is opted-in using the configuration
com.azure.messaging.eventhubs.v2
. (39107), (41805) - Add
EventProcessorClient.stop(Duration timeout)
to stop theEventProcessorClient
and await it to shut down. TheEventProcessorClient.stop()
method now will wait for up to the default timeout (10 seconds) waiting for the processor to stop. (#41878) - Observability improvements (#38899)
- Added span for update checkpoint call.
- Added partitionId and consumer group (when available) to span and metric attributes.
- Updated distributed traces and metrics to follow OpenTelemetry semantic conventions 1.27.0.
Please refer to OpenTelemetry messaging semantic conventions for more details.
(#38899)
- Span names now follow
{operaiton name} {entity name}
pattern - Updated metric names and attributes
- Span names now follow
- Fixes the event size computation in EventHubSerializer to include size of delivery annotations. (41605)
- Upgraded
azure-core
from1.51.0
to version1.52.0
. - Upgraded
azure-core-amqp
from2.9.8
to version2.9.9
.
- Integrated RequestResponseChannelCache (CBS, Management channel cache) and ReactorSessionCache, these caches are activated when V2 stack is opted-in using the configuration
com.azure.messaging.eventhubs.v2
. (39107), (41805) - Add
EventProcessorClient.stop(Duration timeout)
to stop theEventProcessorClient
and await it to shut down. TheEventProcessorClient.stop()
method now will wait for up to the default timeout (10 seconds) waiting for the processor to stop. (#41878) - Observability improvements (#38899)
- Added span for update checkpoint call.
- Added partitionId and consumer group (when available) to span and metric attributes.
- Updated distributed traces and metrics to follow OpenTelemetry semantic conventions 1.27.0.
Please refer to OpenTelemetry messaging semantic conventions for more details.
(#38899)
- Span names now follow
{operaiton name} {entity name}
pattern - Updated metric names and attributes
- Span names now follow
- Fixes the event size computation in EventHubSerializer to include size of delivery annotations. (41605)
- Enabling V2 stack support for Event Hubs, which can be opt-in using the configuration
com.azure.messaging.eventhubs.v2
. (40435)
- Upgraded
azure-core
from1.50.0
to version1.51.0
. - Upgraded
azure-core-amqp
from2.9.7
to version2.9.8
.
- Copy connection string properties when cloning the EventHubClientBuilder in EventProcessorClientBuilder, fixes (#40938)
- Upgraded
azure-core
from1.49.1
to version1.50.0
. - Upgraded
azure-core-amqp
from2.9.3
to version2.9.7
.
- Add support for local emulator - Event Hubs emulator overview.
- Use endpoint address's port when specified in connection string. (#40415)
- Fix parsing of
customEndpointAddress
to match one used in connection string. (#40415) - Fixed issue where creating EventProcessorClient instances using the same EventProcessorClientBuilder instance could result in incorrect properties. (#29875)
- Upgraded
azure-core
from1.47.0
to version1.49.1
. - Upgraded
azure-core-amqp
from2.9.2
to version2.9.3
.
- Upgraded
azure-core
from1.48.0
to version1.49.0
. - Upgraded
azure-core-amqp
from2.9.3
to version2.9.4
.
EventData.getOffset()
,CheckpointStore.getOffset()
,EventData.getOffset()
, andLastEnqueuedEventProperties.getOffset()
are changed fromLong
toString
.
- Fixed issue where creating EventProcessorClient instances using the same EventProcessorClientBuilder instance could result in incorrect properties. (#29875)
- Upgraded
azure-core
from1.48.0
to version1.49.0
. - Upgraded
azure-core-amqp
from2.9.3
to version2.9.4
.
- Upgraded
azure-core
from1.47.0
to version1.48.0
. - Upgraded
azure-core-amqp
from2.9.2
to version2.9.3
.
- Upgraded
azure-core
from1.46.0
to version1.47.0
. - Upgraded
azure-core-amqp
from2.9.1
to version2.9.2
.
- Fixed over-prefetching in EventProcessorClient caused by implicit prefetching in partition pump reactor pipeline (#38572)
- Upgraded
azure-core
from1.45.1
to version1.46.0
. - Upgraded
azure-core-amqp
from2.9.0
to version2.9.1
.
- Removed timeout from blocking wait in
EventHubProducerClient
increateBatch
,getEventHubProperties
, andgetPartitionProperties
. (#38229) - Stopped populating status attribute on metrics when no error has happened. (#37884)
- Upgraded
azure-core-amqp
from2.8.14
to version2.9.0
.
- Upgraded
azure-core
from1.45.0
to version1.45.1
. - Upgraded
azure-core-amqp
from2.8.13
to version2.8.14
.
- Upgraded
azure-core-amqp
from2.8.11
to version2.8.13
. - Upgraded
azure-core
from1.44.1
to version1.45.0
.
- Upgraded
azure-core
from1.43.0
to version1.44.1
. - Upgraded
azure-core-amqp
from2.8.9
to version2.8.11
.
- Added support for a Function<String, EventPosition> that maps a partition id to EventPosition in EventProcessorClientBuilder. (#36485)
- Added support for tracing options and configuration. (#33600)
- Aligned with OpenTelemetry messaging semantic conventions (when latest azure-core-tracing-opentelemetry package is used). (#33600)
- Fixed exception when attempting to populate trace context on received
EventData
. (#33594) - Fixed
NullPointerException
when ending span whenAmqpException
is thrown, but itsAmqpErrorCondition
isnull
. (#35299) - Handles errors thrown from user-called code when invoking
PartitionProcessor
'sprocessError
orclose
methods. #36891
- Upgraded
azure-core
from1.42.0
to version1.43.0
. - Upgraded
azure-core-amqp
from2.8.8
to version2.8.9
.
- Upgraded
azure-core
from1.41.0
to version1.42.0
. - Upgraded
azure-core-amqp
from2.8.7
to version2.8.8
.
- Upgraded
azure-core-amqp
from2.8.6
to version2.8.7
. - Upgraded
azure-core
from1.40.0
to version1.41.0
.
- Upgraded
azure-core
from1.39.0
to version1.40.0
. - Upgraded
azure-core-amqp
from2.8.5
to version2.8.6
.
- Upgraded
azure-core-amqp
from2.8.4
to version2.8.5
. - Upgraded
azure-core
from1.38.0
to version1.39.0
.
- Upgraded
azure-core
from1.37.0
to version1.38.0
. - Upgraded
azure-core-amqp
from2.8.3
to version2.8.4
.
- Upgraded
azure-core-amqp
from2.8.2
to version2.8.3
. - Upgraded
azure-core
from1.36.0
to version1.37.0
.
- Fixed NullPointerException when deserializing AMQP message with null body. (#32939)
- Added filter to filter out the closed
AmqpReceiveLink
before passing toAmqpReceiveLinkProcessor
. (#32919) - Fixed usage of static AmqpAnnotatedMessage when creating empty EventData. (#33327)
- Upgraded
azure-core
to1.36.0
. - Upgraded
azure-core-amqp
to2.8.2
.
- Upgraded
azure-core-amqp
to2.9.0-beta.1
.
- Added support for setting different value types in
EventData.getProperties()
. (#32518)
- Fixed ability to pass in namespace connection string in EventHubClientBuilder. (#29536)
- Added retry for createBatch API as this API also makes network calls similar to its companion send API.
- Upgraded
azure-core
to1.35.0
. - Upgraded
azure-core-amqp
to2.8.1
.
- Added
EventHubBufferedProducerBuilder.fullyQualifiedNamespace(String)
- Added
EventHubBufferedProducerBuilder.eventHubName(String)
- Fixed incorrect proxy configuration using environment variables. (#24230)
- Changed the log level for adding credits from Info to Debug. (#20836)
- Upgraded
azure-core
to1.34.0
. - Upgraded
azure-core-amqp
to2.8.0
.
- Enabled metrics for sent events, consumer lag, checkpointing. (#31024)
- Enabled distributed tracing for consumer and batch processor. (#31197)
- Added algorithm for mapping partition keys to partition ids.
- Added EventHubBufferedProducerAsyncClient and EventHubBufferedProducerClient
- Introducing ReactorShim to proxy certain reactive operations to appropriate Reactor operators, these are the operations for which recent Reactor versions have more optimized operators compared to an older version, or same operators with breaking change across Reactor versions
- When available, using the backpressure aware windowTimeout operator through ReactorShim. (#23950)
- Fixed issue where FAIL_OVERFLOW when pushing events in EventHubBufferedProducerClient would result in a tight loop, so no more events would be published. (#30258)
- Upgraded
azure-core
to1.33.0
. - Upgraded
azure-core-amqp
to2.7.2
.
- Fixed issue where EventProcessorClient stop running when load balance thrown 412 status code error. (#29927)
- Upgraded
azure-core
to1.32.0
. - Upgraded
azure-core-amqp
to2.7.1
.
- Added identifier to client. (#22981)
- Upgraded
azure-core
to1.31.0
. - Upgraded
azure-core-amqp
to2.7.0
.
- Added algorithm for mapping partition keys to partition ids.
- Added EventHubBufferedProducerAsyncClient and EventHubBufferedProducerClient
- Introducing ReactorShim to proxy certain reactive operations to appropriate Reactor operators, these are the operations for which recent Reactor versions have more optimized operators compared to an older version, or same operators with breaking change across Reactor versions
- When available, using the backpressure aware windowTimeout operator through ReactorShim. (#23950)
- Upgraded
azure-core
to1.30.0
. - Upgraded
azure-core-amqp
to2.6.0
.
- Updated processor client process error when load balance occurs errors.
- Fixes trace context propagation issue: links to message spans were not populated on send span. (#28951)
- Upgraded
azure-core
to1.29.1
. - Upgraded
azure-core-amqp
to2.5.2
.
EventData.setBodyAsBinaryData
is exposed.
EventData
extends fromMessageContent
.
- Upgraded
azure-core
to1.28.0
. - Upgraded
azure-core-amqp
to2.5.0
.
- Upgraded
azure-core
to1.27.0
. - Upgraded
azure-core-amqp
to2.4.2
.
- Updated the receiver to retry to obtain a new connection if the RequestResponseChannel in the current connection is disposed.
- Removed the incorrect lock from
EventDataBatch.tryAdd()
implementation and documented that this API is not thread-safe. (#25910) - Fixed a bug where users get a NullPointerException when getting
LastEnqueuedEventProperties
for an empty window. (#27121)
- Upgraded
azure-core
from1.25.0
to1.26.0
. - Upgraded
azure-core-amqp
from2.4.0
to2.4.1
.
- Fixed a bug that when received message does not have trace context, span is not created. (#25182)
- Updated load balancing strategy, ownership interval, and load balancing intervals. (#25039)
- Upgraded
azure-core
from1.24.1
to1.25.0
. - Upgraded
azure-core-amqp
from2.3.7
to2.4.0
.
- Upgraded
azure-core
from1.22.0
to1.24.1
. - Upgraded
azure-core-amqp
from2.3.3
to2.3.7
.
- Upgraded
azure-core
from1.21.0
to1.22.0
. - Upgraded
azure-core-amqp
from2.3.3
to2.3.4
.
- Upgraded
azure-core
from1.20.0
to1.21.0
. - Upgraded
azure-core-amqp
from2.3.2
to2.3.3
.
- Update
azure-core
dependency to1.20.0
. - Update
azure-core-amqp
dependency to2.3.2
.
- Add
EventProcessorClientBuilder.prefetchCount(int)
overload.
- Update
azure-core
dependency to1.19.0
. - Update
azure-core-amqp
dependency to2.3.1
.
- Add additional fields to
EventData
.getContentType()
,getCorrelationId()
,getMessageId()
and the corresponding setters were added. - Add
EventData.getRawAmqpMessage()
. Data inEventData.getSystemProperties()
is backed byAmqpAnnotatedMessage
but are read-only.
- Update
azure-core
dependency to1.18.0
. - Update
azure-core-amqp
dependency to2.3.0
.
- Add
EventHubClientBuilder.credential(String, String, AzureNamedKeyCredential)
overload. - Add
EventHubClientBuilder.credential(String, String, AzureSasCredential)
overload. - Add
EventProcessorClientBuilder.credential(String, String, AzureNamedKeyCredential)
overload. - Add
EventProcessorClientBuilder.credential(String, String, AzureSasCredential)
overload. - Add
EventHubConnectionStringProperties
to get connection string properties.
- Update
azure-core
dependency to1.17.0
. - Update
azure-core-amqp
dependency to2.2.0
.
- Update
azure-core
dependency to1.16.0
. - Update
azure-core-amqp
dependency to2.0.5
.
- Update AMQP receive link to add credits on the link based on backpressure request from downstream.
- Update logging to be less verbose.
- Update
azure-core
dependency to1.15.0
. - Update
azure-core-amqp
dependency to2.0.4
.
- Update to end the trace span regardless of the scope instance type for process operation tracing spans.
- Update
azure-core
dependency to1.14.0
. - Update
azure-core-amqp
dependency to2.0.3
.
- Add
clientOptions
toEventProcessorClientBuilder
to support setting user's application id used in user-agent property of the amqp connection.
- Update
azure-core
dependency to1.12.0
. - Update
azure-core-amqp
dependency to2.0.1
. - Update
azure-identity
dependency to1.2.2
.
- Removed
ObjectBatch
and relatedcreateBatch()
andsend()
operations in favor of supportingBinaryData
inEventData
.
- Eagerly close top-level client in
EventProcessorClient
after fetching the list of partitions instead of waiting until the connection times out. - Added checks for matching lost link name with the current link name before propagating the error in
AmqpReceiveLinkProcessor
.
- Add
clientOptions
toEventHubClientBuilder
to support for setting user's application id in the user-agent property of the amqp connection.
EventHubProcessorClient
checks connection status of each partition consumer periodically and closes the partition consumer to rebuild the connection later.
- Update
azure-core
dependency to1.9.0
. - Update
azure-core-amqp
dependency to1.6.0
. - Update
azure-identity
dependency to1.1.3
.
- Default scheme to 'sb://' if no scheme is set in 'Endpoint'.
- Update dependency version of
azure-core-amp
to1.5.1
- Add support for connection strings containing Shared Access Signature
- Add option to control the load balancing cycle interval.
- Add option to control the partition ownership expiration duration.
- Add option to configure the load balancing strategy to either use balanced or greedy approach.
- Support for object serializer to send and receive strongly-typed objects.
- Add option to control the load balancing cycle interval.
- Add option to control the partition ownership expiration duration.
- Add option to configure the load balancing strategy to either use balanced or greedy approach.
- Updated dependency version of
azure-core-amqp
which has a bug fix for updating User Agent string format. - Fix bug where batch receive handler runs on non-blocking thread and fails on blocking calls.
- Fix bug where receiver link fails to add credits to new links created after an existing link is closed.
- Add a check to load balancer task to not run if the previous load balancer task is still in progress.
- Updated dependency version of
azure-core-amqp
to1.2.0
- Add support for sending a collection of events as a single batch from
EventHubProducerClient
andEventHubProducerAsyncClient
. - Updated dependency version of
azure-core-amqp
to1.1.2
.
- Add support for heartbeat for single process event function in Event Processor Client.
- Add support for receiving events in batches in Event Processor Client.
- Fix bug where producers and consumers would be unable to get partition information after a reconnect.
- Use
BinaryData
inEventData
. - Expose
customEndpointAddress
to support connecting to an intermediary before Azure Event Hubs in bothEventHubsClientBuilder
andEventProcessorClientBuilder
- Update
azure-core
dependency to1.13.0
. - Update
azure-core-amqp
dependency to2.0.2
.
- Fix bug where producers and consumers would not be able to block in their consuming code.
- Add support for different error handling cases in EventProcessor.
- Recreate connection in client on transient errors.
- Add tracing links when sending a batch of events.
- Tracing link names are shortened when sending events.
- EventPosition.fromOffset(long) is no longer inclusive.
- Artifact name changed from
preview
tobeta
. - Producer clients (both sync and async) support sending events only using
EventDataBatch
. All other send overloads are removed. - Async consumer now supports receiving events from all partitions to help getting started scenarios.
- Sync consumer will only support receiving from a single partition.
BatchOptions
is renamed toCreateBatchOptions
.receive()
methods now returnPartitionEvent
which includesPartitionContext
andEventData
.- Producer and consumer clients now support sharing same amqp connection.
- Removed support for user-provided schedulers.
- Configuration for owner level and ability to track last enqueued event properties are now in
ReceiveOptions
and will be declared at the time of receiving events and not when the client is created. EventProcessorStore
renamed toCheckpointStore
and method signatures are updated.EventProcessor
renamed toEventProcessorClient
andEventProcessorBuilder
renamed toEventProcessorClientBuilder
.- New types introduced to simplify functional callbacks used in
EventProcessorClient
. EventProcessorClient
now supports tracking last enqueued event properties.
- Separate clients for sending and receiving events.
EventHubProducerAsyncClient
andEventHubProduderClient
for sending events.EventHubConsumerAsyncClient
andEventHubConsumerClient
for receiving events.
- Moved
InMemoryPartitionManager
from main package to samples and renamed toInMemoryEventProcessorStore
- The
EventProcessorStore
, previouslyPartitionManager
, has updated APIs to includefullyQualifiedNamespace
of the Event Hub. - Updates to
EventProcessor
to allow functional callbacks for processing events, errors etc.
- Proxy support for Event Hubs sync and async clients.
EventHubConsumer
andEventHubAsyncConsumer
now provides last enqueued event information.- Refactored
azure-messaging-eventhubs
to extract AMQP implementation details toazure-core-amqp
module. - Added modules support for JDK 9+.
- Renamed model classes to support Java bean naming convention.
EventHubClient
andEventHubAsyncClient
now provides method to get the name of the Event Hub associated with the client.
- Added synchronous
EventHubConsumer
andEventHubProducer
. - Added support for balancing partitions across multiple instances of
EventProcessor
. - Added
EventProcessorBuilder
to createEventProcessor
and removed that functionality fromEventHubClientBuilder
. - Removed
CheckpointManager
. Checkpointing is done using thePartitionContext
exposed inPartitionProcessor
methods. - Changed
PartitionProcessor
from an interface to an abstract base class. - Changed
EventData.systemProperties
to exclude already exposed properties (ie. sequence number, enqueued time) from the map.
- Added support for AMQP protocol using web sockets to connect to Azure Event Hubs.
- Added support for publishing events using
EventDataBatch
. - Added support for processing events from all Event Hub partitions through
EventProcessor
. This early preview is intended to allow consumers to test the new design using a single instance that does not persist checkpoints to any durable store. - Added a fixed retry policy implementation.
- Removed operation timeouts from
EventHubClientBuilder
,EventHubProducerOptions
, andEventHubConsumerOptions
and moved toRetryOptions
astryTimeout(Duration)
. - Removed exposed retry policies in favor of setting
RetryOptions
. - Renamed all instances of
EventHubPath
toEventHubName
to align with the usage context and unify on the chosen semantics across the client library for different languages. - Fixed various bugs for notifying users of link shutdown and errors.
- Proxy support is not implemented.
EventHubClient
does not clean up itsEventHubPublishers
andEventHubConsumers
. These need to be closed manually by callingEventHubPublisher.close()
orEventHubConsumer.close()
.- On transient AMQP connection/session/link failures, the corresponding transports are not recreated.
Version 5.0.0-preview.1 is a preview of our efforts in creating a client library that is developer-friendly, idiomatic to the Java ecosystem, and as consistent across different languages and platforms as possible. The principles that guide our efforts can be found in the Azure SDK Design Guidelines for .Java.
For release notes and more information please visit https://aka.ms/azure-sdk-preview1-java
- Reactive streams support using Project Reactor.
- Fetch Event Hub and partition metadata using
EventHubClient
. - Publish messages to an Azure Event Hub using
EventHubPublisher
. - Receive messages from an Azure Event Hub using
EventHubConsumer
.
- AMQP protocol using web sockets is not implemented.
- Proxy support is not implemented.
- Event Host Processor is not implemented.
- Creating an
EventDataBatch
is not exposed. - Getting
ReceiverRuntimeInformation
fromEventHubConsumer
is not implemented. EventHubClient
does not clean up itsEventHubPublishers
andEventHubConsumers
. These need to be closed manually by callingEventHubPublisher.close()
orEventHubConsumer.close()
.- Creating more than two concurrent
EventHubClients
orEventHubConsumers
does not work. Limit usage of concurrent clients and consumers to two to avoid failures.