internal AmqpEventDataSender(AmqpEventHubClient eventHubClient, string partitionId) : base(eventHubClient, partitionId) { Path = !string.IsNullOrEmpty(partitionId) ? $"{eventHubClient.EventHubName}/Partitions/{partitionId}" : eventHubClient.EventHubName; SendLinkManager = new FaultTolerantAmqpObject <SendingAmqpLink>(CreateLinkAsync, CloseSession); _clientLinkManager = new ActiveClientLinkManager((AmqpEventHubClient)EventHubClient); MaxMessageSize = 256 * 1024; // Default. Updated when link is opened }
public AmqpPartitionReceiver( AmqpEventHubClient eventHubClient, string consumerGroupName, string partitionId, EventPosition eventPosition, long?epoch, ReceiverOptions receiverOptions) : base(eventHubClient, consumerGroupName, partitionId, eventPosition, epoch, receiverOptions) { string entityPath = eventHubClient.ConnectionStringBuilder.EntityPath; Path = $"{entityPath}/ConsumerGroups/{consumerGroupName}/Partitions/{partitionId}"; ReceiveLinkManager = new FaultTolerantAmqpObject <ReceivingAmqpLink>(CreateLinkAsync, CloseSession); receivePumpLock = new object(); clientLinkManager = new ActiveClientLinkManager((AmqpEventHubClient)EventHubClient); }
private static async void OnLinkExpiration(object state) { ActiveClientLinkManager thisPtr = (ActiveClientLinkManager)state; Fx.Assert(thisPtr.activeClientLink != null, "activeClientLink cant be null"); Fx.Assert(thisPtr.activeClientLink.IsClientToken, "timer can't fire if the link auth is not based on a client token"); try { //DNX_TODO: MessagingClientEtwProvider.Provider.EventWriteAmqpManageLink("Before SendToken", thisPtr.activeClientLink.LinkObject, string.Empty); AmqpCbsLink cbsLink = thisPtr.activeClientLink.Connection.Extensions.Find <AmqpCbsLink>(); if (cbsLink == null) { cbsLink = new AmqpCbsLink(thisPtr.activeClientLink.Connection); } DateTime validTo = await cbsLink.SendTokenAsync( thisPtr.eventHubClient.CbsTokenProvider, thisPtr.eventHubClient.ConnectionStringBuilder.Endpoint, thisPtr.activeClientLink.Audience, thisPtr.activeClientLink.EndpointUri, thisPtr.activeClientLink.RequiredClaims, ActiveClientLinkManager.SendTokenTimeout).ConfigureAwait(false); //DNX_TODO: MessagingClientEtwProvider.Provider.EventWriteAmqpManageLink("After SendToken", thisPtr.activeClientLink.LinkObject, validTo.ToString(CultureInfo.InvariantCulture)); lock (thisPtr.syncRoot) { thisPtr.activeClientLink.AuthorizationValidToUtc = validTo; thisPtr.ScheduleValidityTimer(); } } catch { //DNX_TODO: //if (Fx.IsFatal(exception)) //{ // throw; //} //DNX_TODO: MessagingClientEtwProvider.Provider.EventWriteAmqpLogError(thisPtr.activeClientLink.LinkObject, "BeginSendToken", exception.Message); // failed to refresh token, no need to do anything since the server will shut the link itself thisPtr.CancelValidityTimer(); } }