@azure/service-bus 7.10.0-beta.2 → 7.10.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/connectionContext.js +1 -2
- package/dist/browser/connectionContext.js.map +1 -1
- package/dist/browser/constructorHelpers.js +3 -4
- package/dist/browser/constructorHelpers.js.map +1 -1
- package/dist/browser/core/autoLockRenewer.js +9 -5
- package/dist/browser/core/autoLockRenewer.js.map +1 -1
- package/dist/browser/core/batchingReceiver.js +26 -18
- package/dist/browser/core/batchingReceiver.js.map +1 -1
- package/dist/browser/core/linkEntity.js +74 -13
- package/dist/browser/core/linkEntity.js.map +1 -1
- package/dist/browser/core/managementClient.js +48 -48
- package/dist/browser/core/managementClient.js.map +1 -1
- package/dist/browser/core/messageReceiver.js +41 -14
- package/dist/browser/core/messageReceiver.js.map +1 -1
- package/dist/browser/core/messageSender.js +33 -10
- package/dist/browser/core/messageSender.js.map +1 -1
- package/dist/browser/core/receiverHelper.js +3 -2
- package/dist/browser/core/receiverHelper.js.map +1 -1
- package/dist/browser/core/shared.js +11 -4
- package/dist/browser/core/shared.js.map +1 -1
- package/dist/browser/core/streamingReceiver.js +74 -43
- package/dist/browser/core/streamingReceiver.js.map +1 -1
- package/dist/browser/diagnostics/instrumentServiceBusMessage.js +16 -8
- package/dist/browser/diagnostics/instrumentServiceBusMessage.js.map +1 -1
- package/dist/browser/receivers/receiver.js +68 -23
- package/dist/browser/receivers/receiver.js.map +1 -1
- package/dist/browser/receivers/receiverCommon.js +36 -21
- package/dist/browser/receivers/receiverCommon.js.map +1 -1
- package/dist/browser/receivers/sessionReceiver.js +69 -29
- package/dist/browser/receivers/sessionReceiver.js.map +1 -1
- package/dist/browser/sender.js +33 -11
- package/dist/browser/sender.js.map +1 -1
- package/dist/browser/serializers/queueResourceSerializer.js +9 -1
- package/dist/browser/serializers/queueResourceSerializer.js.map +1 -1
- package/dist/browser/serializers/ruleResourceSerializer.js +1 -2
- package/dist/browser/serializers/ruleResourceSerializer.js.map +1 -1
- package/dist/browser/serviceBusAtomManagementClient.js +181 -228
- package/dist/browser/serviceBusAtomManagementClient.js.map +1 -1
- package/dist/browser/serviceBusClient.js +31 -22
- package/dist/browser/serviceBusClient.js.map +1 -1
- package/dist/browser/serviceBusError.js +21 -1
- package/dist/browser/serviceBusError.js.map +1 -1
- package/dist/browser/serviceBusMessage.js +208 -13
- package/dist/browser/serviceBusMessage.js.map +1 -1
- package/dist/browser/serviceBusMessageBatch.js +32 -8
- package/dist/browser/serviceBusMessageBatch.js.map +1 -1
- package/dist/browser/serviceBusRuleManager.js +39 -15
- package/dist/browser/serviceBusRuleManager.js.map +1 -1
- package/dist/browser/session/messageSession.js +130 -25
- package/dist/browser/session/messageSession.js.map +1 -1
- package/dist/browser/util/atomXmlHelper.js +4 -5
- package/dist/browser/util/atomXmlHelper.js.map +1 -1
- package/dist/browser/util/compat/httpHeaders.js +1 -0
- package/dist/browser/util/compat/httpHeaders.js.map +1 -1
- package/dist/browser/util/constants.js +1 -1
- package/dist/browser/util/constants.js.map +1 -1
- package/dist/browser/util/sasServiceClientCredentials.js +8 -0
- package/dist/browser/util/sasServiceClientCredentials.js.map +1 -1
- package/dist/browser/util/semaphore.js +6 -2
- package/dist/browser/util/semaphore.js.map +1 -1
- package/dist/browser/util/utils.js +5 -7
- package/dist/browser/util/utils.js.map +1 -1
- package/dist/commonjs/connectionContext.js +1 -2
- package/dist/commonjs/connectionContext.js.map +1 -1
- package/dist/commonjs/constructorHelpers.js +3 -4
- package/dist/commonjs/constructorHelpers.js.map +1 -1
- package/dist/commonjs/core/autoLockRenewer.js +9 -5
- package/dist/commonjs/core/autoLockRenewer.js.map +1 -1
- package/dist/commonjs/core/batchingReceiver.js +26 -18
- package/dist/commonjs/core/batchingReceiver.js.map +1 -1
- package/dist/commonjs/core/linkEntity.js +74 -13
- package/dist/commonjs/core/linkEntity.js.map +1 -1
- package/dist/commonjs/core/managementClient.js +48 -48
- package/dist/commonjs/core/managementClient.js.map +1 -1
- package/dist/commonjs/core/messageReceiver.js +41 -14
- package/dist/commonjs/core/messageReceiver.js.map +1 -1
- package/dist/commonjs/core/messageSender.js +33 -10
- package/dist/commonjs/core/messageSender.js.map +1 -1
- package/dist/commonjs/core/receiverHelper.js +3 -2
- package/dist/commonjs/core/receiverHelper.js.map +1 -1
- package/dist/commonjs/core/shared.js +11 -4
- package/dist/commonjs/core/shared.js.map +1 -1
- package/dist/commonjs/core/streamingReceiver.js +74 -43
- package/dist/commonjs/core/streamingReceiver.js.map +1 -1
- package/dist/commonjs/diagnostics/instrumentServiceBusMessage.js +16 -8
- package/dist/commonjs/diagnostics/instrumentServiceBusMessage.js.map +1 -1
- package/dist/commonjs/receivers/receiver.js +68 -23
- package/dist/commonjs/receivers/receiver.js.map +1 -1
- package/dist/commonjs/receivers/receiverCommon.js +36 -21
- package/dist/commonjs/receivers/receiverCommon.js.map +1 -1
- package/dist/commonjs/receivers/sessionReceiver.js +69 -29
- package/dist/commonjs/receivers/sessionReceiver.js.map +1 -1
- package/dist/commonjs/sender.js +33 -11
- package/dist/commonjs/sender.js.map +1 -1
- package/dist/commonjs/serializers/queueResourceSerializer.js +9 -1
- package/dist/commonjs/serializers/queueResourceSerializer.js.map +1 -1
- package/dist/commonjs/serializers/ruleResourceSerializer.js +1 -2
- package/dist/commonjs/serializers/ruleResourceSerializer.js.map +1 -1
- package/dist/commonjs/serviceBusAtomManagementClient.js +181 -227
- package/dist/commonjs/serviceBusAtomManagementClient.js.map +1 -1
- package/dist/commonjs/serviceBusClient.js +31 -22
- package/dist/commonjs/serviceBusClient.js.map +1 -1
- package/dist/commonjs/serviceBusError.js +21 -1
- package/dist/commonjs/serviceBusError.js.map +1 -1
- package/dist/commonjs/serviceBusMessage.js +208 -12
- package/dist/commonjs/serviceBusMessage.js.map +1 -1
- package/dist/commonjs/serviceBusMessageBatch.js +32 -8
- package/dist/commonjs/serviceBusMessageBatch.js.map +1 -1
- package/dist/commonjs/serviceBusRuleManager.js +39 -15
- package/dist/commonjs/serviceBusRuleManager.js.map +1 -1
- package/dist/commonjs/session/messageSession.js +130 -25
- package/dist/commonjs/session/messageSession.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +11 -11
- package/dist/commonjs/util/atomXmlHelper.js +4 -5
- package/dist/commonjs/util/atomXmlHelper.js.map +1 -1
- package/dist/commonjs/util/compat/httpHeaders.js +1 -0
- package/dist/commonjs/util/compat/httpHeaders.js.map +1 -1
- package/dist/commonjs/util/constants.js +1 -1
- package/dist/commonjs/util/constants.js.map +1 -1
- package/dist/commonjs/util/runtimeInfo.js +2 -2
- package/dist/commonjs/util/runtimeInfo.js.map +1 -1
- package/dist/commonjs/util/sasServiceClientCredentials.js +8 -0
- package/dist/commonjs/util/sasServiceClientCredentials.js.map +1 -1
- package/dist/commonjs/util/semaphore.js +6 -2
- package/dist/commonjs/util/semaphore.js.map +1 -1
- package/dist/commonjs/util/utils.js +5 -7
- package/dist/commonjs/util/utils.js.map +1 -1
- package/dist/esm/connectionContext.js +1 -2
- package/dist/esm/connectionContext.js.map +1 -1
- package/dist/esm/constructorHelpers.js +3 -4
- package/dist/esm/constructorHelpers.js.map +1 -1
- package/dist/esm/core/autoLockRenewer.js +9 -5
- package/dist/esm/core/autoLockRenewer.js.map +1 -1
- package/dist/esm/core/batchingReceiver.js +26 -18
- package/dist/esm/core/batchingReceiver.js.map +1 -1
- package/dist/esm/core/linkEntity.js +74 -13
- package/dist/esm/core/linkEntity.js.map +1 -1
- package/dist/esm/core/managementClient.js +48 -48
- package/dist/esm/core/managementClient.js.map +1 -1
- package/dist/esm/core/messageReceiver.js +41 -14
- package/dist/esm/core/messageReceiver.js.map +1 -1
- package/dist/esm/core/messageSender.js +33 -10
- package/dist/esm/core/messageSender.js.map +1 -1
- package/dist/esm/core/receiverHelper.js +3 -2
- package/dist/esm/core/receiverHelper.js.map +1 -1
- package/dist/esm/core/shared.js +11 -4
- package/dist/esm/core/shared.js.map +1 -1
- package/dist/esm/core/streamingReceiver.js +74 -43
- package/dist/esm/core/streamingReceiver.js.map +1 -1
- package/dist/esm/diagnostics/instrumentServiceBusMessage.js +16 -8
- package/dist/esm/diagnostics/instrumentServiceBusMessage.js.map +1 -1
- package/dist/esm/receivers/receiver.js +68 -23
- package/dist/esm/receivers/receiver.js.map +1 -1
- package/dist/esm/receivers/receiverCommon.js +36 -21
- package/dist/esm/receivers/receiverCommon.js.map +1 -1
- package/dist/esm/receivers/sessionReceiver.js +69 -29
- package/dist/esm/receivers/sessionReceiver.js.map +1 -1
- package/dist/esm/sender.js +33 -11
- package/dist/esm/sender.js.map +1 -1
- package/dist/esm/serializers/queueResourceSerializer.js +9 -1
- package/dist/esm/serializers/queueResourceSerializer.js.map +1 -1
- package/dist/esm/serializers/ruleResourceSerializer.js +1 -2
- package/dist/esm/serializers/ruleResourceSerializer.js.map +1 -1
- package/dist/esm/serviceBusAtomManagementClient.js +181 -228
- package/dist/esm/serviceBusAtomManagementClient.js.map +1 -1
- package/dist/esm/serviceBusClient.js +31 -22
- package/dist/esm/serviceBusClient.js.map +1 -1
- package/dist/esm/serviceBusError.js +21 -1
- package/dist/esm/serviceBusError.js.map +1 -1
- package/dist/esm/serviceBusMessage.js +208 -13
- package/dist/esm/serviceBusMessage.js.map +1 -1
- package/dist/esm/serviceBusMessageBatch.js +32 -8
- package/dist/esm/serviceBusMessageBatch.js.map +1 -1
- package/dist/esm/serviceBusRuleManager.js +39 -15
- package/dist/esm/serviceBusRuleManager.js.map +1 -1
- package/dist/esm/session/messageSession.js +130 -25
- package/dist/esm/session/messageSession.js.map +1 -1
- package/dist/esm/util/atomXmlHelper.js +4 -5
- package/dist/esm/util/atomXmlHelper.js.map +1 -1
- package/dist/esm/util/compat/httpHeaders.js +1 -0
- package/dist/esm/util/compat/httpHeaders.js.map +1 -1
- package/dist/esm/util/constants.js +1 -1
- package/dist/esm/util/constants.js.map +1 -1
- package/dist/esm/util/runtimeInfo.js +1 -1
- package/dist/esm/util/runtimeInfo.js.map +1 -1
- package/dist/esm/util/sasServiceClientCredentials.js +8 -0
- package/dist/esm/util/sasServiceClientCredentials.js.map +1 -1
- package/dist/esm/util/semaphore.js +6 -2
- package/dist/esm/util/semaphore.js.map +1 -1
- package/dist/esm/util/utils.js +5 -7
- package/dist/esm/util/utils.js.map +1 -1
- package/dist/react-native/connectionContext.js +1 -2
- package/dist/react-native/connectionContext.js.map +1 -1
- package/dist/react-native/constructorHelpers.js +3 -4
- package/dist/react-native/constructorHelpers.js.map +1 -1
- package/dist/react-native/core/autoLockRenewer.js +9 -5
- package/dist/react-native/core/autoLockRenewer.js.map +1 -1
- package/dist/react-native/core/batchingReceiver.js +26 -18
- package/dist/react-native/core/batchingReceiver.js.map +1 -1
- package/dist/react-native/core/linkEntity.js +74 -13
- package/dist/react-native/core/linkEntity.js.map +1 -1
- package/dist/react-native/core/managementClient.js +48 -48
- package/dist/react-native/core/managementClient.js.map +1 -1
- package/dist/react-native/core/messageReceiver.js +41 -14
- package/dist/react-native/core/messageReceiver.js.map +1 -1
- package/dist/react-native/core/messageSender.js +33 -10
- package/dist/react-native/core/messageSender.js.map +1 -1
- package/dist/react-native/core/receiverHelper.js +3 -2
- package/dist/react-native/core/receiverHelper.js.map +1 -1
- package/dist/react-native/core/shared.js +11 -4
- package/dist/react-native/core/shared.js.map +1 -1
- package/dist/react-native/core/streamingReceiver.js +74 -43
- package/dist/react-native/core/streamingReceiver.js.map +1 -1
- package/dist/react-native/diagnostics/instrumentServiceBusMessage.js +16 -8
- package/dist/react-native/diagnostics/instrumentServiceBusMessage.js.map +1 -1
- package/dist/react-native/receivers/receiver.js +68 -23
- package/dist/react-native/receivers/receiver.js.map +1 -1
- package/dist/react-native/receivers/receiverCommon.js +36 -21
- package/dist/react-native/receivers/receiverCommon.js.map +1 -1
- package/dist/react-native/receivers/sessionReceiver.js +69 -29
- package/dist/react-native/receivers/sessionReceiver.js.map +1 -1
- package/dist/react-native/sender.js +33 -11
- package/dist/react-native/sender.js.map +1 -1
- package/dist/react-native/serializers/queueResourceSerializer.js +9 -1
- package/dist/react-native/serializers/queueResourceSerializer.js.map +1 -1
- package/dist/react-native/serializers/ruleResourceSerializer.js +1 -2
- package/dist/react-native/serializers/ruleResourceSerializer.js.map +1 -1
- package/dist/react-native/serviceBusAtomManagementClient.js +181 -228
- package/dist/react-native/serviceBusAtomManagementClient.js.map +1 -1
- package/dist/react-native/serviceBusClient.js +31 -22
- package/dist/react-native/serviceBusClient.js.map +1 -1
- package/dist/react-native/serviceBusError.js +21 -1
- package/dist/react-native/serviceBusError.js.map +1 -1
- package/dist/react-native/serviceBusMessage.js +208 -13
- package/dist/react-native/serviceBusMessage.js.map +1 -1
- package/dist/react-native/serviceBusMessageBatch.js +32 -8
- package/dist/react-native/serviceBusMessageBatch.js.map +1 -1
- package/dist/react-native/serviceBusRuleManager.js +39 -15
- package/dist/react-native/serviceBusRuleManager.js.map +1 -1
- package/dist/react-native/session/messageSession.js +130 -25
- package/dist/react-native/session/messageSession.js.map +1 -1
- package/dist/react-native/util/atomXmlHelper.js +4 -5
- package/dist/react-native/util/atomXmlHelper.js.map +1 -1
- package/dist/react-native/util/compat/httpHeaders.js +1 -0
- package/dist/react-native/util/compat/httpHeaders.js.map +1 -1
- package/dist/react-native/util/constants.js +1 -1
- package/dist/react-native/util/constants.js.map +1 -1
- package/dist/react-native/util/sasServiceClientCredentials.js +8 -0
- package/dist/react-native/util/sasServiceClientCredentials.js.map +1 -1
- package/dist/react-native/util/semaphore.js +6 -2
- package/dist/react-native/util/semaphore.js.map +1 -1
- package/dist/react-native/util/utils.js +5 -7
- package/dist/react-native/util/utils.js.map +1 -1
- package/package.json +38 -38
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receiverCommon.js","sourceRoot":"","sources":["../../../src/receivers/receiverCommon.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { MessageHandlers, ProcessErrorArgs } from \"../models.js\";\nimport type { ServiceBusReceiver } from \"./receiver.js\";\nimport type { OperationOptionsBase } from \"../modelsToBeSharedWithEventHubs.js\";\nimport type { createServiceBusLogger, ServiceBusLogger } from \"../log.js\";\nimport { logger, receiverLogger } from \"../log.js\";\nimport { translateServiceBusError } from \"../serviceBusError.js\";\nimport type {\n DeadLetterOptions,\n ServiceBusMessageImpl,\n ServiceBusReceivedMessage,\n} from \"../serviceBusMessage.js\";\nimport { DispositionType } from \"../serviceBusMessage.js\";\nimport type { DispositionStatusOptions } from \"../core/managementClient.js\";\nimport type { ConnectionContext } from \"../connectionContext.js\";\nimport type { RetryConfig, RetryOptions } from \"@azure/core-amqp\";\nimport {\n Constants,\n ErrorNameConditionMapper,\n retry,\n RetryMode,\n RetryOperationType,\n} from \"@azure/core-amqp\";\nimport { MessageAlreadySettled } from \"../util/errors.js\";\nimport { delay, isDefined } from \"@azure/core-util\";\nimport type { TracingSpanLink } from \"@azure/core-tracing\";\nimport { toSpanOptions, tracingClient } from \"../diagnostics/tracing.js\";\nimport { extractSpanContextFromServiceBusMessage } from \"../diagnostics/instrumentServiceBusMessage.js\";\n\n/**\n * @internal\n */\nexport function assertValidMessageHandlers(handlers: {\n processMessage?: unknown;\n processError?: unknown;\n}): void {\n if (\n handlers &&\n handlers.processMessage instanceof Function &&\n handlers.processError instanceof Function\n ) {\n return;\n }\n\n throw new TypeError('Invalid \"MessageHandlers\" provided.');\n}\n\n/**\n * @internal\n */\nexport async function* getMessageIterator(\n receiver: Pick<ServiceBusReceiver, \"receiveMessages\">,\n options?: OperationOptionsBase,\n): AsyncIterableIterator<ServiceBusReceivedMessage> {\n while (true) {\n const messages = await receiver.receiveMessages(1, options);\n\n if (messages.length === 0) {\n continue;\n }\n\n yield messages[0];\n }\n}\n\n/**\n * @internal\n */\nexport function wrapProcessErrorHandler(\n handlers: Pick<MessageHandlers, \"processError\">,\n loggerParam: ServiceBusLogger = receiverLogger,\n): MessageHandlers[\"processError\"] {\n return async (args: ProcessErrorArgs) => {\n try {\n args.error = translateServiceBusError(args.error);\n await handlers.processError(args);\n } catch (err: any) {\n loggerParam.logError(err, `An error was thrown from the user's processError handler`);\n }\n };\n}\n\n/**\n * @internal\n *\n */\nexport function completeMessage(\n message: ServiceBusMessageImpl,\n context: ConnectionContext,\n entityPath: string,\n retryOptions: RetryOptions | undefined,\n): Promise<void> {\n receiverLogger.verbose(\n \"[%s] Completing the message with id '%s'.\",\n context.connectionId,\n message.messageId,\n );\n const tracingContext = extractSpanContextFromServiceBusMessage(message);\n const spanLinks: TracingSpanLink[] = tracingContext ? [{ tracingContext }] : [];\n return tracingClient.withSpan(\n \"ServicebusReceiver.complete\",\n {},\n () =>\n settleMessage(message, DispositionType.complete, context, entityPath, {\n retryOptions,\n }),\n {\n spanLinks,\n ...toSpanOptions({ entityPath, host: context.config.host }, \"settle\", \"client\"),\n },\n );\n}\n\n/**\n * @internal\n *\n */\nexport function abandonMessage(\n message: ServiceBusMessageImpl,\n context: ConnectionContext,\n entityPath: string,\n propertiesToModify: { [key: string]: number | boolean | string | Date | null } | undefined,\n retryOptions: RetryOptions | undefined,\n): Promise<void> {\n receiverLogger.verbose(\n \"[%s] Abandoning the message with id '%s'.\",\n context.connectionId,\n message.messageId,\n );\n const tracingContext = extractSpanContextFromServiceBusMessage(message);\n const spanLinks: TracingSpanLink[] = tracingContext ? [{ tracingContext }] : [];\n return tracingClient.withSpan(\n \"ServicebusReceiver.abandon\",\n {},\n () =>\n settleMessage(message, DispositionType.abandon, context, entityPath, {\n propertiesToModify,\n retryOptions,\n }),\n {\n spanLinks,\n ...toSpanOptions({ entityPath, host: context.config.host }, \"settle\", \"client\"),\n },\n );\n}\n\n/**\n * @internal\n *\n */\nexport function deferMessage(\n message: ServiceBusMessageImpl,\n context: ConnectionContext,\n entityPath: string,\n propertiesToModify: { [key: string]: number | boolean | string | Date | null } | undefined,\n retryOptions: RetryOptions | undefined,\n): Promise<void> {\n receiverLogger.verbose(\n \"[%s] Deferring the message with id '%s'.\",\n context.connectionId,\n message.messageId,\n );\n const tracingContext = extractSpanContextFromServiceBusMessage(message);\n const spanLinks: TracingSpanLink[] = tracingContext ? [{ tracingContext }] : [];\n return tracingClient.withSpan(\n \"ServiceBusReceiver.defer\",\n {},\n () =>\n settleMessage(message, DispositionType.defer, context, entityPath, {\n retryOptions,\n propertiesToModify,\n }),\n {\n spanLinks,\n ...toSpanOptions({ entityPath, host: context.config.host }, \"settle\", \"client\"),\n },\n );\n}\n\n/**\n * @internal\n *\n */\nexport function deadLetterMessage(\n message: ServiceBusMessageImpl,\n context: ConnectionContext,\n entityPath: string,\n propertiesToModify:\n | (DeadLetterOptions & { [key: string]: number | boolean | string | Date | null })\n | undefined,\n retryOptions: RetryOptions | undefined,\n): Promise<void> {\n receiverLogger.verbose(\n \"[%s] Deadlettering the message with id '%s'.\",\n context.connectionId,\n message.messageId,\n );\n\n const actualPropertiesToModify: Partial<DeadLetterOptions> = {\n ...propertiesToModify,\n };\n\n // these two fields are handled specially and don't need to be in here.\n delete actualPropertiesToModify.deadLetterErrorDescription;\n delete actualPropertiesToModify.deadLetterReason;\n\n const dispositionStatusOptions: DispositionStatusOptions = {\n propertiesToModify: actualPropertiesToModify,\n deadLetterReason: propertiesToModify?.deadLetterReason,\n deadLetterDescription: propertiesToModify?.deadLetterErrorDescription,\n retryOptions,\n };\n\n const tracingContext = extractSpanContextFromServiceBusMessage(message);\n const spanLinks: TracingSpanLink[] = tracingContext ? [{ tracingContext }] : [];\n\n return tracingClient.withSpan(\n \"ServiceBusReceiver.deadLetter\",\n {},\n () =>\n settleMessage(\n message,\n DispositionType.deadletter,\n context,\n entityPath,\n dispositionStatusOptions,\n ),\n {\n spanLinks,\n ...toSpanOptions({ entityPath, host: context.config.host }, \"settle\", \"client\"),\n },\n );\n}\n\n/**\n * @internal\n */\nexport function settleMessage(\n message: ServiceBusMessageImpl,\n operation: DispositionType,\n context: ConnectionContext,\n entityPath: string,\n options: DispositionStatusOptions,\n _settleMessageOperation: typeof settleMessageOperation = settleMessageOperation,\n): Promise<void> {\n return retry({\n connectionId: context.connectionId,\n operation: () => {\n return _settleMessageOperation(message, operation, context, entityPath, options);\n },\n operationType: RetryOperationType.messageSettlement,\n abortSignal: options?.abortSignal,\n retryOptions: options?.retryOptions,\n });\n}\n\n/**\n * @internal\n *\n * NOTE: it's tempting to make this method non-async. However, doing so makes it too easy\n * to throw exceptions that will not be \"catchable\" by people chaining to the returned Promise\n * since we can throw exceptions outside of the Promise's scope.\n */\nexport async function settleMessageOperation(\n message: ServiceBusMessageImpl,\n operation: DispositionType,\n context: ConnectionContext,\n entityPath: string,\n options: DispositionStatusOptions,\n): Promise<void> {\n const isDeferredMessage = !message.delivery.link;\n const receiver = isDeferredMessage\n ? undefined\n : context.getReceiverFromCache(message.delivery.link.name, message.sessionId);\n const associatedLinkName = receiver?.name;\n\n let error: Error | undefined;\n if (message.delivery.remote_settled) {\n error = new Error(MessageAlreadySettled);\n } else if (\n !isDeferredMessage &&\n (!receiver || !receiver.isOpen()) &&\n isDefined(message.sessionId)\n ) {\n error = translateServiceBusError({\n description:\n `Failed to ${operation} the message as the AMQP link with which the message was ` +\n `received is no longer alive.`,\n condition: ErrorNameConditionMapper.SessionLockLostError,\n });\n }\n\n if (error) {\n receiverLogger.logError(\n error,\n \"[%s] An error occurred when settling a message with id '%s'\",\n context.connectionId,\n message.messageId,\n );\n throw error;\n }\n\n // Message Settlement with managementLink\n // 1. If the received message is deferred as such messages can only be settled using managementLink\n // 2. If the associated receiver link is not available. This does not apply to messages from sessions as we need a lock on the session to do so.\n if (isDeferredMessage || ((!receiver || !receiver.isOpen()) && !isDefined(message.sessionId))) {\n return context\n .getManagementClient(entityPath)\n .updateDispositionStatus(message.lockToken!, operation, {\n ...options,\n associatedLinkName,\n sessionId: message.sessionId,\n })\n .catch((err) => {\n throw translateServiceBusError(err);\n });\n }\n\n return receiver!.settleMessage(message, operation, options).catch((err) => {\n throw translateServiceBusError(err);\n });\n}\n\n/** @internal */\nexport interface RetryForeverArgs<T> {\n retryConfig: RetryConfig<T>;\n onError: (err: Error) => void;\n logger: ReturnType<typeof createServiceBusLogger>;\n logPrefix: string;\n}\n\n/**\n * Calculates delay between retries, in milliseconds.\n */\nfunction calculateDelay(\n attemptCount: number,\n retryDelayInMs: number,\n maxRetryDelayInMs: number,\n mode: RetryMode,\n): number {\n if (mode === RetryMode.Exponential) {\n const boundedRandDelta =\n retryDelayInMs * 0.8 +\n Math.floor(Math.random() * (retryDelayInMs * 1.2 - retryDelayInMs * 0.8));\n\n const incrementDelta = boundedRandDelta * (Math.pow(2, attemptCount) - 1);\n return Math.min(incrementDelta, maxRetryDelayInMs);\n }\n\n return retryDelayInMs;\n}\n\n/**\n * Retry infinitely until success, reporting in between retry attempts.\n *\n * This function will only stop retrying if:\n * - args.retryConfig.operation resolves successfully\n * - args.retryConfig.operation rejects with an `AbortError`\n *\n * @internal\n */\nexport async function retryForever<T>(\n args: RetryForeverArgs<T>,\n retryFn: typeof retry = retry,\n): Promise<T> {\n let numRetryCycles = 0;\n const config = args.retryConfig;\n if (!config.retryOptions) {\n config.retryOptions = {};\n }\n // eslint-disable-next-line eqeqeq\n if (config.retryOptions.retryDelayInMs == undefined || config.retryOptions.retryDelayInMs < 0) {\n config.retryOptions.retryDelayInMs = Constants.defaultDelayBetweenOperationRetriesInMs;\n }\n if (\n // eslint-disable-next-line eqeqeq\n config.retryOptions.maxRetryDelayInMs == undefined ||\n config.retryOptions.maxRetryDelayInMs < 0\n ) {\n config.retryOptions.maxRetryDelayInMs = Constants.defaultMaxDelayForExponentialRetryInMs;\n }\n if (!config.retryOptions.mode) {\n config.retryOptions.mode = RetryMode.Fixed;\n }\n\n // The retries are broken up into cycles, giving the user some control over how often\n // we actually attempt to retry.\n while (true) {\n ++numRetryCycles;\n\n try {\n return await retryFn(args.retryConfig);\n } catch (err: any) {\n // if the user aborts the operation we're immediately done.\n // AbortError is also thrown by linkEntity.init() if the connection has been\n // permanently closed.\n if (err.name === \"AbortError\") {\n logger.warning(`${args.logPrefix} AbortError caught, ending retries.`);\n throw err;\n }\n\n // we only report the error here - this avoids spamming the user with too many\n // redundant reports of errors while still providing them incremental status on failures.\n try {\n args.onError(err);\n } catch (error: any) {\n logger.error(\"args.onerror has thrown\", error);\n }\n\n args.logger.logError(\n err,\n `${args.logPrefix} Error thrown in retry cycle ${numRetryCycles}, restarting retry cycle with retry options`,\n args.retryConfig,\n );\n\n const delayInMs = calculateDelay(\n numRetryCycles,\n config.retryOptions.retryDelayInMs,\n config.retryOptions.maxRetryDelayInMs,\n config.retryOptions.mode,\n );\n logger.verbose(\n \"[%s] Sleeping for %d milliseconds for '%s'.\",\n config.connectionId,\n delayInMs,\n config.operationType,\n );\n await delay(delayInMs, {\n abortSignal: config.abortSignal,\n abortErrorMsg: \"Retry cycle has been cancelled by the user.\",\n });\n\n continue;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"receiverCommon.js","sourceRoot":"","sources":["../../../src/receivers/receiverCommon.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { MessageHandlers, ProcessErrorArgs } from \"../models.js\";\nimport type { ServiceBusReceiver } from \"./receiver.js\";\nimport type { OperationOptionsBase } from \"../modelsToBeSharedWithEventHubs.js\";\nimport type { createServiceBusLogger, ServiceBusLogger } from \"../log.js\";\nimport { logger, receiverLogger } from \"../log.js\";\nimport { translateServiceBusError } from \"../serviceBusError.js\";\nimport type {\n DeadLetterOptions,\n ServiceBusMessageImpl,\n ServiceBusReceivedMessage,\n} from \"../serviceBusMessage.js\";\nimport { DispositionType } from \"../serviceBusMessage.js\";\nimport type { DispositionStatusOptions } from \"../core/managementClient.js\";\nimport type { ConnectionContext } from \"../connectionContext.js\";\nimport type { RetryConfig, RetryOptions } from \"@azure/core-amqp\";\nimport {\n Constants,\n ErrorNameConditionMapper,\n retry,\n RetryMode,\n RetryOperationType,\n} from \"@azure/core-amqp\";\nimport { MessageAlreadySettled } from \"../util/errors.js\";\nimport { delay, isDefined } from \"@azure/core-util\";\nimport type { TracingSpanLink } from \"@azure/core-tracing\";\nimport { toSpanOptions, tracingClient } from \"../diagnostics/tracing.js\";\nimport { extractSpanContextFromServiceBusMessage } from \"../diagnostics/instrumentServiceBusMessage.js\";\n\n/**\n * @internal\n */\nexport function assertValidMessageHandlers(handlers: {\n processMessage?: unknown;\n processError?: unknown;\n}): void {\n if (\n handlers &&\n handlers.processMessage instanceof Function &&\n handlers.processError instanceof Function\n ) {\n return;\n }\n\n throw new TypeError('Invalid \"MessageHandlers\" provided.');\n}\n\n/**\n * @internal\n */\nexport async function* getMessageIterator(\n receiver: Pick<ServiceBusReceiver, \"receiveMessages\">,\n options?: OperationOptionsBase,\n): AsyncIterableIterator<ServiceBusReceivedMessage> {\n while (true) {\n const messages = await receiver.receiveMessages(1, options);\n\n if (messages.length === 0) {\n continue;\n }\n\n yield messages[0];\n }\n}\n\n/**\n * @internal\n */\nexport function wrapProcessErrorHandler(\n handlers: Pick<MessageHandlers, \"processError\">,\n loggerParam: ServiceBusLogger = receiverLogger,\n): MessageHandlers[\"processError\"] {\n return async (args: ProcessErrorArgs) => {\n try {\n args.error = translateServiceBusError(args.error);\n await handlers.processError(args);\n } catch (err: any) {\n loggerParam.logError(err, `An error was thrown from the user's processError handler`);\n }\n };\n}\n\n/**\n * @internal\n *\n */\nexport function completeMessage(\n message: ServiceBusMessageImpl,\n context: ConnectionContext,\n entityPath: string,\n retryOptions: RetryOptions | undefined,\n): Promise<void> {\n receiverLogger.verbose(\n \"[%s] Completing the message with id '%s'.\",\n context.connectionId,\n message.messageId,\n );\n const tracingContext = extractSpanContextFromServiceBusMessage(message);\n const spanLinks: TracingSpanLink[] = tracingContext ? [{ tracingContext }] : [];\n return tracingClient.withSpan(\n \"ServicebusReceiver.complete\",\n {},\n () =>\n settleMessage(message, DispositionType.complete, context, entityPath, {\n retryOptions,\n }),\n {\n spanLinks,\n ...toSpanOptions({ entityPath, host: context.config.host }, \"settle\", \"client\"),\n },\n );\n}\n\n/**\n * @internal\n *\n */\nexport function abandonMessage(\n message: ServiceBusMessageImpl,\n context: ConnectionContext,\n entityPath: string,\n propertiesToModify: { [key: string]: number | boolean | string | Date | null } | undefined,\n retryOptions: RetryOptions | undefined,\n): Promise<void> {\n receiverLogger.verbose(\n \"[%s] Abandoning the message with id '%s'.\",\n context.connectionId,\n message.messageId,\n );\n const tracingContext = extractSpanContextFromServiceBusMessage(message);\n const spanLinks: TracingSpanLink[] = tracingContext ? [{ tracingContext }] : [];\n return tracingClient.withSpan(\n \"ServicebusReceiver.abandon\",\n {},\n () =>\n settleMessage(message, DispositionType.abandon, context, entityPath, {\n propertiesToModify,\n retryOptions,\n }),\n {\n spanLinks,\n ...toSpanOptions({ entityPath, host: context.config.host }, \"settle\", \"client\"),\n },\n );\n}\n\n/**\n * @internal\n *\n */\nexport function deferMessage(\n message: ServiceBusMessageImpl,\n context: ConnectionContext,\n entityPath: string,\n propertiesToModify: { [key: string]: number | boolean | string | Date | null } | undefined,\n retryOptions: RetryOptions | undefined,\n): Promise<void> {\n receiverLogger.verbose(\n \"[%s] Deferring the message with id '%s'.\",\n context.connectionId,\n message.messageId,\n );\n const tracingContext = extractSpanContextFromServiceBusMessage(message);\n const spanLinks: TracingSpanLink[] = tracingContext ? [{ tracingContext }] : [];\n return tracingClient.withSpan(\n \"ServiceBusReceiver.defer\",\n {},\n () =>\n settleMessage(message, DispositionType.defer, context, entityPath, {\n retryOptions,\n propertiesToModify,\n }),\n {\n spanLinks,\n ...toSpanOptions({ entityPath, host: context.config.host }, \"settle\", \"client\"),\n },\n );\n}\n\n/**\n * @internal\n *\n */\nexport function deadLetterMessage(\n message: ServiceBusMessageImpl,\n context: ConnectionContext,\n entityPath: string,\n propertiesToModify:\n | (DeadLetterOptions & { [key: string]: number | boolean | string | Date | null })\n | undefined,\n retryOptions: RetryOptions | undefined,\n): Promise<void> {\n receiverLogger.verbose(\n \"[%s] Deadlettering the message with id '%s'.\",\n context.connectionId,\n message.messageId,\n );\n\n const actualPropertiesToModify: Partial<DeadLetterOptions> = {\n ...propertiesToModify,\n };\n\n // these two fields are handled specially and don't need to be in here.\n delete actualPropertiesToModify.deadLetterErrorDescription;\n delete actualPropertiesToModify.deadLetterReason;\n\n const dispositionStatusOptions: DispositionStatusOptions = {\n propertiesToModify: actualPropertiesToModify,\n deadLetterReason: propertiesToModify?.deadLetterReason,\n deadLetterDescription: propertiesToModify?.deadLetterErrorDescription,\n retryOptions,\n };\n\n const tracingContext = extractSpanContextFromServiceBusMessage(message);\n const spanLinks: TracingSpanLink[] = tracingContext ? [{ tracingContext }] : [];\n\n return tracingClient.withSpan(\n \"ServiceBusReceiver.deadLetter\",\n {},\n () =>\n settleMessage(\n message,\n DispositionType.deadletter,\n context,\n entityPath,\n dispositionStatusOptions,\n ),\n {\n spanLinks,\n ...toSpanOptions({ entityPath, host: context.config.host }, \"settle\", \"client\"),\n },\n );\n}\n\n/**\n * @internal\n */\nexport function settleMessage(\n message: ServiceBusMessageImpl,\n operation: DispositionType,\n context: ConnectionContext,\n entityPath: string,\n options: DispositionStatusOptions,\n _settleMessageOperation: typeof settleMessageOperation = settleMessageOperation,\n): Promise<void> {\n return retry({\n connectionId: context.connectionId,\n operation: () => {\n return _settleMessageOperation(message, operation, context, entityPath, options);\n },\n operationType: RetryOperationType.messageSettlement,\n abortSignal: options?.abortSignal,\n retryOptions: options?.retryOptions,\n });\n}\n\n/**\n * @internal\n *\n * NOTE: it's tempting to make this method non-async. However, doing so makes it too easy\n * to throw exceptions that will not be \"catchable\" by people chaining to the returned Promise\n * since we can throw exceptions outside of the Promise's scope.\n */\nexport async function settleMessageOperation(\n message: ServiceBusMessageImpl,\n operation: DispositionType,\n context: ConnectionContext,\n entityPath: string,\n options: DispositionStatusOptions,\n): Promise<void> {\n const isDeferredMessage = !message.delivery.link;\n const receiver = isDeferredMessage\n ? undefined\n : context.getReceiverFromCache(message.delivery.link.name, message.sessionId);\n const associatedLinkName = receiver?.name;\n\n let error: Error | undefined;\n if (message.delivery.remote_settled) {\n error = new Error(MessageAlreadySettled);\n } else if (\n !isDeferredMessage &&\n (!receiver || !receiver.isOpen()) &&\n isDefined(message.sessionId)\n ) {\n error = translateServiceBusError({\n description:\n `Failed to ${operation} the message as the AMQP link with which the message was ` +\n `received is no longer alive.`,\n condition: ErrorNameConditionMapper.SessionLockLostError,\n });\n }\n\n if (error) {\n receiverLogger.logError(\n error,\n \"[%s] An error occurred when settling a message with id '%s'\",\n context.connectionId,\n message.messageId,\n );\n throw error;\n }\n\n // Message Settlement with managementLink\n // 1. If the received message is deferred as such messages can only be settled using managementLink\n // 2. If the associated receiver link is not available. This does not apply to messages from sessions as we need a lock on the session to do so.\n if (isDeferredMessage || ((!receiver || !receiver.isOpen()) && !isDefined(message.sessionId))) {\n return context\n .getManagementClient(entityPath)\n .updateDispositionStatus(message.lockToken!, operation, {\n ...options,\n associatedLinkName,\n sessionId: message.sessionId,\n })\n .catch((err) => {\n throw translateServiceBusError(err);\n });\n }\n\n return receiver!.settleMessage(message, operation, options).catch((err) => {\n throw translateServiceBusError(err);\n });\n}\n\n/** @internal */\nexport interface RetryForeverArgs<T> {\n retryConfig: RetryConfig<T>;\n onError: (err: Error) => void;\n logger: ReturnType<typeof createServiceBusLogger>;\n logPrefix: string;\n}\n\n/**\n * Calculates delay between retries, in milliseconds.\n */\nfunction calculateDelay(\n attemptCount: number,\n retryDelayInMs: number,\n maxRetryDelayInMs: number,\n mode: RetryMode,\n): number {\n if (mode === RetryMode.Exponential) {\n const boundedRandDelta =\n retryDelayInMs * 0.8 +\n Math.floor(Math.random() * (retryDelayInMs * 1.2 - retryDelayInMs * 0.8));\n\n const incrementDelta = boundedRandDelta * (Math.pow(2, attemptCount) - 1);\n return Math.min(incrementDelta, maxRetryDelayInMs);\n }\n\n return retryDelayInMs;\n}\n\n/**\n * Retry infinitely until success, reporting in between retry attempts.\n *\n * This function will only stop retrying if:\n * - args.retryConfig.operation resolves successfully\n * - args.retryConfig.operation rejects with an `AbortError`\n *\n * @internal\n */\nexport async function retryForever<T>(\n args: RetryForeverArgs<T>,\n retryFn: typeof retry = retry,\n): Promise<T> {\n let numRetryCycles = 0;\n const config = args.retryConfig;\n if (!config.retryOptions) {\n config.retryOptions = {};\n }\n // eslint-disable-next-line eqeqeq\n if (config.retryOptions.retryDelayInMs == undefined || config.retryOptions.retryDelayInMs < 0) {\n config.retryOptions.retryDelayInMs = Constants.defaultDelayBetweenOperationRetriesInMs;\n }\n if (\n // eslint-disable-next-line eqeqeq\n config.retryOptions.maxRetryDelayInMs == undefined ||\n config.retryOptions.maxRetryDelayInMs < 0\n ) {\n config.retryOptions.maxRetryDelayInMs = Constants.defaultMaxDelayForExponentialRetryInMs;\n }\n if (!config.retryOptions.mode) {\n config.retryOptions.mode = RetryMode.Fixed;\n }\n\n // The retries are broken up into cycles, giving the user some control over how often\n // we actually attempt to retry.\n while (true) {\n ++numRetryCycles;\n\n try {\n return await retryFn(args.retryConfig);\n } catch (err: any) {\n // if the user aborts the operation we're immediately done.\n // AbortError is also thrown by linkEntity.init() if the connection has been\n // permanently closed.\n if (err.name === \"AbortError\") {\n logger.warning(`${args.logPrefix} AbortError caught, ending retries.`);\n throw err;\n }\n\n // we only report the error here - this avoids spamming the user with too many\n // redundant reports of errors while still providing them incremental status on failures.\n try {\n args.onError(err);\n } catch (error: any) {\n logger.error(\"args.onerror has thrown\", error);\n }\n\n args.logger.logError(\n err,\n `${args.logPrefix} Error thrown in retry cycle ${numRetryCycles}, restarting retry cycle with retry options`,\n args.retryConfig,\n );\n\n const delayInMs = calculateDelay(\n numRetryCycles,\n config.retryOptions.retryDelayInMs,\n config.retryOptions.maxRetryDelayInMs,\n config.retryOptions.mode,\n );\n logger.verbose(\n \"[%s] Sleeping for %d milliseconds for '%s'.\",\n config.connectionId,\n delayInMs,\n config.operationType,\n );\n await delay(delayInMs, {\n abortSignal: config.abortSignal,\n abortErrorMsg: \"Retry cycle has been cancelled by the user.\",\n });\n\n continue;\n }\n }\n}\n"]}
|
|
@@ -15,6 +15,19 @@ const serviceBusError_js_1 = require("../serviceBusError.js");
|
|
|
15
15
|
* @internal
|
|
16
16
|
*/
|
|
17
17
|
class ServiceBusSessionReceiverImpl {
|
|
18
|
+
_messageSession;
|
|
19
|
+
_context;
|
|
20
|
+
entityPath;
|
|
21
|
+
receiveMode;
|
|
22
|
+
_skipParsingBodyAsJson;
|
|
23
|
+
_skipConvertingDate;
|
|
24
|
+
_retryOptions;
|
|
25
|
+
sessionId;
|
|
26
|
+
identifier;
|
|
27
|
+
/**
|
|
28
|
+
* Denotes if close() was called on this receiver
|
|
29
|
+
*/
|
|
30
|
+
_isClosed = false;
|
|
18
31
|
get logPrefix() {
|
|
19
32
|
return `[${this._context.connectionId}|session:${this.entityPath}]`;
|
|
20
33
|
}
|
|
@@ -31,10 +44,6 @@ class ServiceBusSessionReceiverImpl {
|
|
|
31
44
|
this._skipParsingBodyAsJson = _skipParsingBodyAsJson;
|
|
32
45
|
this._skipConvertingDate = _skipConvertingDate;
|
|
33
46
|
this._retryOptions = _retryOptions;
|
|
34
|
-
/**
|
|
35
|
-
* Denotes if close() was called on this receiver
|
|
36
|
-
*/
|
|
37
|
-
this._isClosed = false;
|
|
38
47
|
(0, errors_js_1.throwErrorIfConnectionClosed)(_context);
|
|
39
48
|
this.sessionId = _messageSession.sessionId;
|
|
40
49
|
this.identifier = _messageSession.identifier;
|
|
@@ -101,11 +110,16 @@ class ServiceBusSessionReceiverImpl {
|
|
|
101
110
|
*/
|
|
102
111
|
async renewSessionLock(options) {
|
|
103
112
|
this._throwIfReceiverOrConnectionClosed();
|
|
104
|
-
return tracing_js_1.tracingClient.withSpan("ServiceBusSessionReceiver.renewSessionLock", options
|
|
113
|
+
return tracing_js_1.tracingClient.withSpan("ServiceBusSessionReceiver.renewSessionLock", options ?? {}, (updatedOptions) => {
|
|
105
114
|
const renewSessionLockOperationPromise = async () => {
|
|
106
115
|
this._messageSession.sessionLockedUntilUtc = await this._context
|
|
107
116
|
.getManagementClient(this.entityPath)
|
|
108
|
-
.renewSessionLock(this.sessionId,
|
|
117
|
+
.renewSessionLock(this.sessionId, {
|
|
118
|
+
...updatedOptions,
|
|
119
|
+
associatedLinkName: this._messageSession.name,
|
|
120
|
+
requestName: "renewSessionLock",
|
|
121
|
+
timeoutInMs: this._retryOptions.timeoutInMs,
|
|
122
|
+
});
|
|
109
123
|
return this._messageSession.sessionLockedUntilUtc;
|
|
110
124
|
};
|
|
111
125
|
const config = {
|
|
@@ -113,7 +127,7 @@ class ServiceBusSessionReceiverImpl {
|
|
|
113
127
|
connectionId: this._context.connectionId,
|
|
114
128
|
operationType: core_amqp_1.RetryOperationType.management,
|
|
115
129
|
retryOptions: this._retryOptions,
|
|
116
|
-
abortSignal: options
|
|
130
|
+
abortSignal: options?.abortSignal,
|
|
117
131
|
};
|
|
118
132
|
return (0, core_amqp_1.retry)(config);
|
|
119
133
|
});
|
|
@@ -128,11 +142,16 @@ class ServiceBusSessionReceiverImpl {
|
|
|
128
142
|
*/
|
|
129
143
|
async setSessionState(state, options = {}) {
|
|
130
144
|
this._throwIfReceiverOrConnectionClosed();
|
|
131
|
-
return tracing_js_1.tracingClient.withSpan("ServiceBusSessionReceiver.setSessionState", options
|
|
145
|
+
return tracing_js_1.tracingClient.withSpan("ServiceBusSessionReceiver.setSessionState", options ?? {}, (updatedOptions) => {
|
|
132
146
|
const setSessionStateOperationPromise = async () => {
|
|
133
147
|
await this._context
|
|
134
148
|
.getManagementClient(this.entityPath)
|
|
135
|
-
.setSessionState(this.sessionId, state,
|
|
149
|
+
.setSessionState(this.sessionId, state, {
|
|
150
|
+
...updatedOptions,
|
|
151
|
+
associatedLinkName: this._messageSession.name,
|
|
152
|
+
requestName: "setState",
|
|
153
|
+
timeoutInMs: this._retryOptions.timeoutInMs,
|
|
154
|
+
});
|
|
136
155
|
return;
|
|
137
156
|
};
|
|
138
157
|
const config = {
|
|
@@ -140,7 +159,7 @@ class ServiceBusSessionReceiverImpl {
|
|
|
140
159
|
connectionId: this._context.connectionId,
|
|
141
160
|
operationType: core_amqp_1.RetryOperationType.management,
|
|
142
161
|
retryOptions: this._retryOptions,
|
|
143
|
-
abortSignal: options
|
|
162
|
+
abortSignal: options?.abortSignal,
|
|
144
163
|
};
|
|
145
164
|
return (0, core_amqp_1.retry)(config);
|
|
146
165
|
});
|
|
@@ -155,26 +174,37 @@ class ServiceBusSessionReceiverImpl {
|
|
|
155
174
|
*/
|
|
156
175
|
async getSessionState(options = {}) {
|
|
157
176
|
this._throwIfReceiverOrConnectionClosed();
|
|
158
|
-
return tracing_js_1.tracingClient.withSpan("ServiceBusSessionReceiver.getSessionState", options
|
|
177
|
+
return tracing_js_1.tracingClient.withSpan("ServiceBusSessionReceiver.getSessionState", options ?? {}, (updatedOptions) => {
|
|
159
178
|
const getSessionStateOperationPromise = async () => {
|
|
160
179
|
return this._context
|
|
161
180
|
.getManagementClient(this.entityPath)
|
|
162
|
-
.getSessionState(this.sessionId,
|
|
181
|
+
.getSessionState(this.sessionId, {
|
|
182
|
+
...updatedOptions,
|
|
183
|
+
associatedLinkName: this._messageSession.name,
|
|
184
|
+
requestName: "getState",
|
|
185
|
+
timeoutInMs: this._retryOptions.timeoutInMs,
|
|
186
|
+
});
|
|
163
187
|
};
|
|
164
188
|
const config = {
|
|
165
189
|
operation: getSessionStateOperationPromise,
|
|
166
190
|
connectionId: this._context.connectionId,
|
|
167
191
|
operationType: core_amqp_1.RetryOperationType.management,
|
|
168
192
|
retryOptions: this._retryOptions,
|
|
169
|
-
abortSignal: options
|
|
193
|
+
abortSignal: options?.abortSignal,
|
|
170
194
|
};
|
|
171
195
|
return (0, core_amqp_1.retry)(config);
|
|
172
196
|
});
|
|
173
197
|
}
|
|
174
198
|
async peekMessages(maxMessageCount, options = {}) {
|
|
175
|
-
var _a;
|
|
176
199
|
this._throwIfReceiverOrConnectionClosed();
|
|
177
|
-
const managementRequestOptions =
|
|
200
|
+
const managementRequestOptions = {
|
|
201
|
+
...options,
|
|
202
|
+
associatedLinkName: this._messageSession.name,
|
|
203
|
+
requestName: "peekMessages",
|
|
204
|
+
timeoutInMs: this._retryOptions?.timeoutInMs,
|
|
205
|
+
skipParsingBodyAsJson: this._skipParsingBodyAsJson,
|
|
206
|
+
skipConvertingDate: this._skipConvertingDate,
|
|
207
|
+
};
|
|
178
208
|
// omitMessageBody is available at runtime, but only exported in experimental subpath
|
|
179
209
|
const { fromSequenceNumber, omitMessageBody } = options;
|
|
180
210
|
const peekOperationPromise = async () => {
|
|
@@ -194,7 +224,7 @@ class ServiceBusSessionReceiverImpl {
|
|
|
194
224
|
connectionId: this._context.connectionId,
|
|
195
225
|
operationType: core_amqp_1.RetryOperationType.management,
|
|
196
226
|
retryOptions: this._retryOptions,
|
|
197
|
-
abortSignal: options
|
|
227
|
+
abortSignal: options?.abortSignal,
|
|
198
228
|
};
|
|
199
229
|
return (0, core_amqp_1.retry)(config);
|
|
200
230
|
}
|
|
@@ -208,7 +238,14 @@ class ServiceBusSessionReceiverImpl {
|
|
|
208
238
|
const receiveDeferredMessagesOperationPromise = async () => {
|
|
209
239
|
const deferredMessages = await this._context
|
|
210
240
|
.getManagementClient(this.entityPath)
|
|
211
|
-
.receiveDeferredMessages(deferredSequenceNumbers, this.receiveMode, this.sessionId,
|
|
241
|
+
.receiveDeferredMessages(deferredSequenceNumbers, this.receiveMode, this.sessionId, {
|
|
242
|
+
...options,
|
|
243
|
+
associatedLinkName: this._messageSession.name,
|
|
244
|
+
requestName: "receiveDeferredMessages",
|
|
245
|
+
timeoutInMs: this._retryOptions.timeoutInMs,
|
|
246
|
+
skipParsingBodyAsJson: this._skipParsingBodyAsJson,
|
|
247
|
+
skipConvertingDate: this._skipConvertingDate,
|
|
248
|
+
});
|
|
212
249
|
return deferredMessages;
|
|
213
250
|
};
|
|
214
251
|
const config = {
|
|
@@ -216,7 +253,7 @@ class ServiceBusSessionReceiverImpl {
|
|
|
216
253
|
connectionId: this._context.connectionId,
|
|
217
254
|
operationType: core_amqp_1.RetryOperationType.management,
|
|
218
255
|
retryOptions: this._retryOptions,
|
|
219
|
-
abortSignal: options
|
|
256
|
+
abortSignal: options?.abortSignal,
|
|
220
257
|
};
|
|
221
258
|
return (0, core_amqp_1.retry)(config);
|
|
222
259
|
}
|
|
@@ -225,28 +262,33 @@ class ServiceBusSessionReceiverImpl {
|
|
|
225
262
|
const deleteMessagesOperationPromise = () => {
|
|
226
263
|
return this._context
|
|
227
264
|
.getManagementClient(this.entityPath)
|
|
228
|
-
.deleteMessages(options.maxMessageCount, options
|
|
265
|
+
.deleteMessages(options.maxMessageCount, options?.beforeEnqueueTime, this.sessionId, {
|
|
266
|
+
...options,
|
|
267
|
+
associatedLinkName: this._messageSession.name,
|
|
268
|
+
requestName: "deleteMessages",
|
|
269
|
+
timeoutInMs: this._retryOptions.timeoutInMs,
|
|
270
|
+
});
|
|
229
271
|
};
|
|
230
272
|
const config = {
|
|
231
273
|
operation: deleteMessagesOperationPromise,
|
|
232
274
|
connectionId: this._context.connectionId,
|
|
233
275
|
operationType: core_amqp_1.RetryOperationType.management,
|
|
234
276
|
retryOptions: this._retryOptions,
|
|
235
|
-
abortSignal: options
|
|
277
|
+
abortSignal: options?.abortSignal,
|
|
236
278
|
};
|
|
237
279
|
return (0, core_amqp_1.retry)(config);
|
|
238
280
|
}
|
|
239
281
|
async purgeMessages(options) {
|
|
240
282
|
let deletedCount = await this.deleteMessages({
|
|
241
283
|
maxMessageCount: receiver_js_1.MaxDeleteMessageCount,
|
|
242
|
-
beforeEnqueueTime: options
|
|
284
|
+
beforeEnqueueTime: options?.beforeEnqueueTime,
|
|
243
285
|
});
|
|
244
286
|
if (deletedCount === receiver_js_1.MaxDeleteMessageCount) {
|
|
245
287
|
let batchCount = receiver_js_1.MaxDeleteMessageCount;
|
|
246
288
|
while (batchCount === receiver_js_1.MaxDeleteMessageCount) {
|
|
247
289
|
batchCount = await this.deleteMessages({
|
|
248
290
|
maxMessageCount: receiver_js_1.MaxDeleteMessageCount,
|
|
249
|
-
beforeEnqueueTime: options
|
|
291
|
+
beforeEnqueueTime: options?.beforeEnqueueTime,
|
|
250
292
|
});
|
|
251
293
|
deletedCount += batchCount;
|
|
252
294
|
}
|
|
@@ -262,8 +304,7 @@ class ServiceBusSessionReceiverImpl {
|
|
|
262
304
|
throw new TypeError(errors_js_1.InvalidMaxMessageCountError);
|
|
263
305
|
}
|
|
264
306
|
const receiveBatchOperationPromise = async () => {
|
|
265
|
-
|
|
266
|
-
const receivedMessages = await this._messageSession.receiveMessages(maxMessageCount, (_a = options === null || options === void 0 ? void 0 : options.maxWaitTimeInMs) !== null && _a !== void 0 ? _a : core_amqp_1.Constants.defaultOperationTimeoutInMs, receiver_js_1.defaultMaxTimeAfterFirstMessageForBatchingMs, options !== null && options !== void 0 ? options : {});
|
|
307
|
+
const receivedMessages = await this._messageSession.receiveMessages(maxMessageCount, options?.maxWaitTimeInMs ?? core_amqp_1.Constants.defaultOperationTimeoutInMs, receiver_js_1.defaultMaxTimeAfterFirstMessageForBatchingMs, options ?? {});
|
|
267
308
|
return receivedMessages;
|
|
268
309
|
};
|
|
269
310
|
const config = {
|
|
@@ -271,7 +312,7 @@ class ServiceBusSessionReceiverImpl {
|
|
|
271
312
|
connectionId: this._context.connectionId,
|
|
272
313
|
operationType: core_amqp_1.RetryOperationType.receiveMessage,
|
|
273
314
|
retryOptions: this._retryOptions,
|
|
274
|
-
abortSignal: options
|
|
315
|
+
abortSignal: options?.abortSignal,
|
|
275
316
|
};
|
|
276
317
|
return (0, core_amqp_1.retry)(config).catch((err) => {
|
|
277
318
|
throw (0, serviceBusError_js_1.translateServiceBusError)(err);
|
|
@@ -280,15 +321,14 @@ class ServiceBusSessionReceiverImpl {
|
|
|
280
321
|
subscribe(handlers, options) {
|
|
281
322
|
// TODO - receiverOptions for subscribe??
|
|
282
323
|
(0, receiverCommon_js_1.assertValidMessageHandlers)(handlers);
|
|
283
|
-
options = options
|
|
324
|
+
options = options ?? {};
|
|
284
325
|
const processError = (0, receiverCommon_js_1.wrapProcessErrorHandler)(handlers);
|
|
285
326
|
this._registerMessageHandler(async (message) => {
|
|
286
|
-
return tracing_js_1.tracingClient.withSpan("SessionReceiver.process", options
|
|
327
|
+
return tracing_js_1.tracingClient.withSpan("SessionReceiver.process", options ?? {}, () => handlers.processMessage(message), (0, instrumentServiceBusMessage_js_1.toProcessingSpanOptions)(message, this, this._context.config, "process"));
|
|
287
328
|
}, processError, options);
|
|
288
329
|
return {
|
|
289
330
|
close: async () => {
|
|
290
|
-
|
|
291
|
-
return (_a = this._messageSession) === null || _a === void 0 ? void 0 : _a.receiverHelper.suspend();
|
|
331
|
+
return this._messageSession?.receiverHelper.suspend();
|
|
292
332
|
},
|
|
293
333
|
};
|
|
294
334
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionReceiver.js","sourceRoot":"","sources":["../../../src/receivers/sessionReceiver.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ConnectionContext } from \"../connectionContext.js\";\nimport type {\n MessageHandlers,\n ReceiveMessagesOptions,\n ServiceBusReceivedMessage,\n} from \"../index.js\";\nimport type {\n PeekMessagesOptions,\n GetMessageIteratorOptions,\n SubscribeOptions,\n DeleteMessagesOptions,\n PurgeMessagesOptions,\n} from \"../models.js\";\nimport type { MessageSession } from \"../session/messageSession.js\";\nimport {\n getAlreadyReceivingErrorMsg,\n getReceiverClosedErrorMsg,\n InvalidMaxMessageCountError,\n throwErrorIfConnectionClosed,\n throwTypeErrorIfParameterMissing,\n throwTypeErrorIfParameterNotLong,\n throwErrorIfInvalidOperationOnMessage,\n throwTypeErrorIfParameterTypeMismatch,\n} from \"../util/errors.js\";\nimport type { OnError, OnMessage } from \"../core/messageReceiver.js\";\nimport {\n abandonMessage,\n assertValidMessageHandlers,\n completeMessage,\n deadLetterMessage,\n deferMessage,\n getMessageIterator,\n wrapProcessErrorHandler,\n} from \"./receiverCommon.js\";\nimport type { ServiceBusReceiver } from \"./receiver.js\";\nimport { defaultMaxTimeAfterFirstMessageForBatchingMs, MaxDeleteMessageCount } from \"./receiver.js\";\nimport type Long from \"long\";\nimport type { ServiceBusMessageImpl, DeadLetterOptions } from \"../serviceBusMessage.js\";\nimport type { RetryConfig, RetryOptions } from \"@azure/core-amqp\";\nimport { Constants, RetryOperationType, retry, ErrorNameConditionMapper } from \"@azure/core-amqp\";\nimport type { OperationOptionsBase } from \"../modelsToBeSharedWithEventHubs.js\";\nimport type { AmqpError } from \"rhea-promise\";\nimport { toProcessingSpanOptions } from \"../diagnostics/instrumentServiceBusMessage.js\";\nimport { tracingClient } from \"../diagnostics/tracing.js\";\nimport { receiverLogger as logger } from \"../log.js\";\nimport { translateServiceBusError } from \"../serviceBusError.js\";\n\n/**\n *A receiver that handles sessions, including renewing the session lock.\n */\nexport interface ServiceBusSessionReceiver extends ServiceBusReceiver {\n /**\n * The session ID.\n */\n readonly sessionId: string;\n\n /**\n * The time in UTC until which the session is locked.\n * Every time `renewSessionLock()` is called, this time gets updated to current time plus the lock\n * duration as specified during the Queue/Subscription creation.\n *\n * Will return undefined until a AMQP receiver link has been successfully set up for the session.\n *\n * @readonly\n */\n readonly sessionLockedUntilUtc: Date;\n\n /**\n * Streams messages to message handlers.\n * @param handlers - A handler that gets called for messages and errors.\n * @param options - Options for subscribe.\n * @returns An object that can be closed, sending any remaining messages to `handlers` and\n * stopping new messages from arriving.\n */\n subscribe(\n handlers: MessageHandlers,\n options?: SubscribeOptions,\n ): {\n /**\n * Causes the subscriber to stop receiving new messages.\n */\n close(): Promise<void>;\n };\n\n /**\n * Renews the lock on the session.\n */\n renewSessionLock(options?: OperationOptionsBase): Promise<Date>;\n\n /**\n * Gets the state of the Session. For more on session states, see\n * {@link https://learn.microsoft.com/azure/service-bus-messaging/message-sessions#message-session-state | Session State}\n * @param options - Options bag to pass an abort signal or tracing options.\n * @returns The state of that session\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while retrieving session state.\n */\n getSessionState(options?: OperationOptionsBase): Promise<any>;\n\n /**\n * Sets the state on the Session. For more on session states, see\n * {@link https://learn.microsoft.com/azure/service-bus-messaging/message-sessions#message-session-state | Session State}\n * @param state - The state that needs to be set.\n * @param options - Options bag to pass an abort signal or tracing options.\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while setting the session state.\n *\n */\n setSessionState(state: any, options?: OperationOptionsBase): Promise<void>;\n}\n\n/**\n * @internal\n */\nexport class ServiceBusSessionReceiverImpl implements ServiceBusSessionReceiver {\n public sessionId: string;\n public identifier: string;\n\n /**\n * Denotes if close() was called on this receiver\n */\n private _isClosed: boolean = false;\n\n private get logPrefix(): string {\n return `[${this._context.connectionId}|session:${this.entityPath}]`;\n }\n\n /**\n * @internal\n * @throws Error if the underlying connection is closed.\n * @throws Error if an open receiver is already existing for given sessionId.\n */\n constructor(\n private _messageSession: MessageSession,\n private _context: ConnectionContext,\n public entityPath: string,\n public receiveMode: \"peekLock\" | \"receiveAndDelete\",\n private _skipParsingBodyAsJson: boolean,\n private _skipConvertingDate: boolean,\n private _retryOptions: RetryOptions = {},\n ) {\n throwErrorIfConnectionClosed(_context);\n this.sessionId = _messageSession.sessionId;\n this.identifier = _messageSession.identifier;\n }\n\n private _throwIfReceiverOrConnectionClosed(): void {\n throwErrorIfConnectionClosed(this._context);\n if (this.isClosed) {\n if (this._isClosed) {\n const errorMessage = getReceiverClosedErrorMsg(this.entityPath, this.sessionId);\n const error = new Error(errorMessage);\n logger.logError(error, `${this.logPrefix} already closed`);\n throw error;\n }\n const amqpError: AmqpError = {\n condition: ErrorNameConditionMapper.SessionLockLostError,\n description: `The session lock has expired on the session with id ${this.sessionId}`,\n };\n throw translateServiceBusError(amqpError);\n }\n }\n\n private _throwIfAlreadyReceiving(): void {\n if (this._isReceivingMessages()) {\n const errorMessage = getAlreadyReceivingErrorMsg(this.entityPath, this.sessionId);\n const error = new Error(errorMessage);\n logger.logError(error, `${this.logPrefix} is already receiving.`);\n throw error;\n }\n }\n\n public get isClosed(): boolean {\n return (\n this._isClosed ||\n !this._context.messageSessions[this._messageSession.name] ||\n !this._messageSession.isOpen()\n );\n }\n\n /**\n * The time in UTC until which the session is locked.\n * Every time `renewSessionLock()` is called, this time gets updated to current time plus the lock\n * duration as specified during the Queue/Subscription creation.\n *\n * When the lock on the session expires\n * - The current receiver can no longer be used to receive more messages.\n * Create a new receiver using `ServiceBusClient.acceptSession()` or `ServiceBusClient.acceptNextSession()`.\n * - Messages that were received in `peekLock` mode with this receiver but not yet settled\n * will land back in the Queue/Subscription with their delivery count incremented.\n *\n * @readonly\n */\n public get sessionLockedUntilUtc(): Date {\n return this._messageSession.sessionLockedUntilUtc;\n }\n\n /**\n * Renews the lock on the session for the duration as specified during the Queue/Subscription\n * creation. You can check the `sessionLockedUntilUtc` property for the time when the lock expires.\n *\n * When the lock on the session expires\n * - The current receiver can no longer be used to receive mode messages.\n * Create a new receiver using `ServiceBusClient.acceptSession()` or `ServiceBusClient.acceptNextSession()`.\n * - Messages that were received in `peekLock` mode with this receiver but not yet settled\n * will land back in the Queue/Subscription with their delivery count incremented.\n *\n * @param options - Options bag to pass an abort signal or tracing options.\n * @returns New lock token expiry date and time in UTC format.\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while renewing session lock.\n */\n async renewSessionLock(options?: OperationOptionsBase): Promise<Date> {\n this._throwIfReceiverOrConnectionClosed();\n\n return tracingClient.withSpan(\n \"ServiceBusSessionReceiver.renewSessionLock\",\n options ?? {},\n (updatedOptions) => {\n const renewSessionLockOperationPromise = async (): Promise<Date> => {\n this._messageSession!.sessionLockedUntilUtc = await this._context\n .getManagementClient(this.entityPath)\n .renewSessionLock(this.sessionId, {\n ...updatedOptions,\n associatedLinkName: this._messageSession.name,\n requestName: \"renewSessionLock\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n });\n return this._messageSession!.sessionLockedUntilUtc!;\n };\n const config: RetryConfig<Date> = {\n operation: renewSessionLockOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<Date>(config);\n },\n );\n }\n\n /**\n * Sets the state on the Session. For more on session states, see\n * {@link https://learn.microsoft.com/azure/service-bus-messaging/message-sessions#message-session-state | Session State}\n * @param state - The state that needs to be set.\n * @param options - Options bag to pass an abort signal or tracing options.\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while setting the session state.\n */\n async setSessionState(state: unknown, options: OperationOptionsBase = {}): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n\n return tracingClient.withSpan(\n \"ServiceBusSessionReceiver.setSessionState\",\n options ?? {},\n (updatedOptions) => {\n const setSessionStateOperationPromise = async (): Promise<void> => {\n await this._context\n .getManagementClient(this.entityPath)\n .setSessionState(this.sessionId!, state, {\n ...updatedOptions,\n associatedLinkName: this._messageSession.name,\n requestName: \"setState\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n });\n return;\n };\n const config: RetryConfig<void> = {\n operation: setSessionStateOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<void>(config);\n },\n );\n }\n\n /**\n * Gets the state of the Session. For more on session states, see\n * {@link https://learn.microsoft.com/azure/service-bus-messaging/message-sessions#message-session-state | Session State}\n * @param options - Options bag to pass an abort signal or tracing options.\n * @returns The state of that session\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while retrieving session state.\n */\n async getSessionState(options: OperationOptionsBase = {}): Promise<any> {\n this._throwIfReceiverOrConnectionClosed();\n\n return tracingClient.withSpan(\n \"ServiceBusSessionReceiver.getSessionState\",\n options ?? {},\n (updatedOptions) => {\n const getSessionStateOperationPromise = async (): Promise<any> => {\n return this._context\n .getManagementClient(this.entityPath)\n .getSessionState(this.sessionId, {\n ...updatedOptions,\n associatedLinkName: this._messageSession.name,\n requestName: \"getState\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n });\n };\n const config: RetryConfig<any> = {\n operation: getSessionStateOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<any>(config);\n },\n );\n }\n\n async peekMessages(\n maxMessageCount: number,\n options: PeekMessagesOptions = {},\n ): Promise<ServiceBusReceivedMessage[]> {\n this._throwIfReceiverOrConnectionClosed();\n\n const managementRequestOptions = {\n ...options,\n associatedLinkName: this._messageSession.name,\n requestName: \"peekMessages\",\n timeoutInMs: this._retryOptions?.timeoutInMs,\n skipParsingBodyAsJson: this._skipParsingBodyAsJson,\n skipConvertingDate: this._skipConvertingDate,\n };\n // omitMessageBody is available at runtime, but only exported in experimental subpath\n const { fromSequenceNumber, omitMessageBody } = options as PeekMessagesOptions & {\n omitMessageBody: boolean;\n };\n const peekOperationPromise = async (): Promise<ServiceBusReceivedMessage[]> => {\n if (fromSequenceNumber !== undefined) {\n return this._context\n .getManagementClient(this.entityPath)\n .peekBySequenceNumber(\n fromSequenceNumber,\n maxMessageCount,\n this.sessionId,\n omitMessageBody,\n managementRequestOptions,\n );\n } else {\n return this._context\n .getManagementClient(this.entityPath)\n .peekMessagesBySession(\n this.sessionId,\n maxMessageCount,\n omitMessageBody,\n managementRequestOptions,\n );\n }\n };\n\n const config: RetryConfig<ServiceBusReceivedMessage[]> = {\n operation: peekOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<ServiceBusReceivedMessage[]>(config);\n }\n\n async receiveDeferredMessages(\n sequenceNumbers: Long | Long[],\n options: OperationOptionsBase = {},\n ): Promise<ServiceBusReceivedMessage[]> {\n this._throwIfReceiverOrConnectionClosed();\n throwTypeErrorIfParameterMissing(\n this._context.connectionId,\n \"sequenceNumbers\",\n sequenceNumbers,\n );\n throwTypeErrorIfParameterNotLong(\n this._context.connectionId,\n \"sequenceNumbers\",\n sequenceNumbers,\n );\n\n const deferredSequenceNumbers = Array.isArray(sequenceNumbers)\n ? sequenceNumbers\n : [sequenceNumbers];\n const receiveDeferredMessagesOperationPromise = async (): Promise<\n ServiceBusReceivedMessage[]\n > => {\n const deferredMessages = await this._context\n .getManagementClient(this.entityPath)\n .receiveDeferredMessages(deferredSequenceNumbers, this.receiveMode, this.sessionId, {\n ...options,\n associatedLinkName: this._messageSession.name,\n requestName: \"receiveDeferredMessages\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n skipParsingBodyAsJson: this._skipParsingBodyAsJson,\n skipConvertingDate: this._skipConvertingDate,\n });\n return deferredMessages;\n };\n const config: RetryConfig<ServiceBusReceivedMessage[]> = {\n operation: receiveDeferredMessagesOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<ServiceBusReceivedMessage[]>(config);\n }\n\n async deleteMessages(options: DeleteMessagesOptions): Promise<number> {\n this._throwIfReceiverOrConnectionClosed();\n\n const deleteMessagesOperationPromise = (): Promise<number> => {\n return this._context\n .getManagementClient(this.entityPath)\n .deleteMessages(options.maxMessageCount, options?.beforeEnqueueTime, this.sessionId, {\n ...options,\n associatedLinkName: this._messageSession.name,\n requestName: \"deleteMessages\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n });\n };\n const config: RetryConfig<number> = {\n operation: deleteMessagesOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<number>(config);\n }\n\n async purgeMessages(options?: PurgeMessagesOptions): Promise<number> {\n let deletedCount = await this.deleteMessages({\n maxMessageCount: MaxDeleteMessageCount,\n beforeEnqueueTime: options?.beforeEnqueueTime,\n });\n if (deletedCount === MaxDeleteMessageCount) {\n let batchCount = MaxDeleteMessageCount;\n while (batchCount === MaxDeleteMessageCount) {\n batchCount = await this.deleteMessages({\n maxMessageCount: MaxDeleteMessageCount,\n beforeEnqueueTime: options?.beforeEnqueueTime,\n });\n deletedCount += batchCount;\n }\n }\n return deletedCount;\n }\n\n async receiveMessages(\n maxMessageCount: number,\n options?: ReceiveMessagesOptions,\n ): Promise<ServiceBusReceivedMessage[]> {\n this._throwIfReceiverOrConnectionClosed();\n this._throwIfAlreadyReceiving();\n throwTypeErrorIfParameterMissing(\n this._context.connectionId,\n \"maxMessageCount\",\n maxMessageCount,\n );\n throwTypeErrorIfParameterTypeMismatch(\n this._context.connectionId,\n \"maxMessageCount\",\n maxMessageCount,\n \"number\",\n );\n\n if (isNaN(maxMessageCount) || maxMessageCount < 1) {\n throw new TypeError(InvalidMaxMessageCountError);\n }\n\n const receiveBatchOperationPromise = async (): Promise<ServiceBusReceivedMessage[]> => {\n const receivedMessages = await this._messageSession!.receiveMessages(\n maxMessageCount,\n options?.maxWaitTimeInMs ?? Constants.defaultOperationTimeoutInMs,\n defaultMaxTimeAfterFirstMessageForBatchingMs,\n options ?? {},\n );\n\n return receivedMessages;\n };\n const config: RetryConfig<ServiceBusReceivedMessage[]> = {\n operation: receiveBatchOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.receiveMessage,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<ServiceBusReceivedMessage[]>(config).catch((err) => {\n throw translateServiceBusError(err);\n });\n }\n\n subscribe(\n handlers: MessageHandlers,\n options?: SubscribeOptions,\n ): {\n close(): Promise<void>;\n } {\n // TODO - receiverOptions for subscribe??\n assertValidMessageHandlers(handlers);\n\n options = options ?? {};\n\n const processError = wrapProcessErrorHandler(handlers);\n\n this._registerMessageHandler(\n async (message: ServiceBusMessageImpl) => {\n return tracingClient.withSpan(\n \"SessionReceiver.process\",\n options ?? {},\n () => handlers.processMessage(message),\n toProcessingSpanOptions(message, this, this._context.config, \"process\"),\n );\n },\n processError,\n options,\n );\n\n return {\n close: async (): Promise<void> => {\n return this._messageSession?.receiverHelper.suspend();\n },\n };\n }\n\n /**\n * Registers handlers to deal with the incoming stream of messages over an AMQP receiver link\n * from a Queue/Subscription.\n * To stop receiving messages, call `close()` on the SessionReceiver.\n *\n * Throws an error if there is another receive operation in progress on the same receiver. If you\n * are not sure whether there is another receive operation running, check the `isReceivingMessages`\n * property on the receiver.\n *\n * @param onMessage - Handler for processing each incoming message.\n * @param onError - Handler for any error that occurs while receiving or processing messages.\n * @param options - Options to control whether messages should be automatically completed\n * or if the lock on the session should be automatically renewed. You can control the\n * maximum number of messages that should be concurrently processed. You can\n * also provide a timeout in milliseconds to denote the amount of time to wait for a new message\n * before closing the receiver.\n *\n * @throws Error if the underlying connection or receiver is closed.\n * @throws Error if the receiver is already in state of receiving messages.\n * @throws `ServiceBusError` if the service returns an error while receiving messages. These are bubbled up to be handled by user provided `onError` handler.\n */\n private _registerMessageHandler(\n onMessage: OnMessage,\n onError: OnError,\n options: SubscribeOptions,\n ): void {\n this._throwIfReceiverOrConnectionClosed();\n this._throwIfAlreadyReceiving();\n const connId = this._context.connectionId;\n throwTypeErrorIfParameterMissing(connId, \"onMessage\", onMessage);\n throwTypeErrorIfParameterMissing(connId, \"onError\", onError);\n if (typeof onMessage !== \"function\") {\n throw new TypeError(\"The parameter 'onMessage' must be of type 'function'.\");\n }\n if (typeof onError !== \"function\") {\n throw new TypeError(\"The parameter 'onError' must be of type 'function'.\");\n }\n\n try {\n this._messageSession.subscribe(onMessage, onError, options);\n } catch (err: any) {\n onError({\n error: err,\n errorSource: \"receive\",\n entityPath: this.entityPath,\n fullyQualifiedNamespace: this._context.config.host,\n identifier: this.identifier,\n });\n }\n }\n\n getMessageIterator(\n options?: GetMessageIteratorOptions,\n ): AsyncIterableIterator<ServiceBusReceivedMessage> {\n return getMessageIterator(this, options);\n }\n\n async completeMessage(message: ServiceBusReceivedMessage): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n throwErrorIfInvalidOperationOnMessage(message, this.receiveMode, this._context.connectionId);\n const msgImpl = message as ServiceBusMessageImpl;\n return completeMessage(msgImpl, this._context, this.entityPath, this._retryOptions);\n }\n\n async abandonMessage(\n message: ServiceBusReceivedMessage,\n propertiesToModify?: { [key: string]: number | boolean | string | Date | null },\n ): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n throwErrorIfInvalidOperationOnMessage(message, this.receiveMode, this._context.connectionId);\n const msgImpl = message as ServiceBusMessageImpl;\n return abandonMessage(\n msgImpl,\n this._context,\n this.entityPath,\n propertiesToModify,\n this._retryOptions,\n );\n }\n\n async deferMessage(\n message: ServiceBusReceivedMessage,\n propertiesToModify?: { [key: string]: number | boolean | string | Date | null },\n ): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n throwErrorIfInvalidOperationOnMessage(message, this.receiveMode, this._context.connectionId);\n const msgImpl = message as ServiceBusMessageImpl;\n return deferMessage(\n msgImpl,\n this._context,\n this.entityPath,\n propertiesToModify,\n this._retryOptions,\n );\n }\n\n async deadLetterMessage(\n message: ServiceBusReceivedMessage,\n options?: DeadLetterOptions & { [key: string]: number | boolean | string | Date | null },\n ): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n throwErrorIfInvalidOperationOnMessage(message, this.receiveMode, this._context.connectionId);\n const msgImpl = message as ServiceBusMessageImpl;\n return deadLetterMessage(msgImpl, this._context, this.entityPath, options, this._retryOptions);\n }\n\n async renewMessageLock(): Promise<Date> {\n throw new Error(\"Renewing message lock is an invalid operation when working with sessions.\");\n }\n\n async close(): Promise<void> {\n try {\n await this._messageSession.close();\n } catch (err: any) {\n logger.logError(\n err,\n \"%s An error occurred while closing the SessionReceiver for session %s\",\n this.logPrefix,\n this.sessionId,\n );\n throw err;\n } finally {\n this._isClosed = true;\n }\n }\n\n /**\n * Indicates whether the receiver is currently receiving messages or not.\n * When this returns true, new `registerMessageHandler()` or `receiveMessages()` calls cannot be made.\n */\n private _isReceivingMessages(): boolean {\n return this._messageSession ? this._messageSession.isReceivingMessages : false;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"sessionReceiver.js","sourceRoot":"","sources":["../../../src/receivers/sessionReceiver.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ConnectionContext } from \"../connectionContext.js\";\nimport type {\n MessageHandlers,\n ReceiveMessagesOptions,\n ServiceBusReceivedMessage,\n} from \"../index.js\";\nimport type {\n PeekMessagesOptions,\n GetMessageIteratorOptions,\n SubscribeOptions,\n DeleteMessagesOptions,\n PurgeMessagesOptions,\n} from \"../models.js\";\nimport type { MessageSession } from \"../session/messageSession.js\";\nimport {\n getAlreadyReceivingErrorMsg,\n getReceiverClosedErrorMsg,\n InvalidMaxMessageCountError,\n throwErrorIfConnectionClosed,\n throwTypeErrorIfParameterMissing,\n throwTypeErrorIfParameterNotLong,\n throwErrorIfInvalidOperationOnMessage,\n throwTypeErrorIfParameterTypeMismatch,\n} from \"../util/errors.js\";\nimport type { OnError, OnMessage } from \"../core/messageReceiver.js\";\nimport {\n abandonMessage,\n assertValidMessageHandlers,\n completeMessage,\n deadLetterMessage,\n deferMessage,\n getMessageIterator,\n wrapProcessErrorHandler,\n} from \"./receiverCommon.js\";\nimport type { ServiceBusReceiver } from \"./receiver.js\";\nimport { defaultMaxTimeAfterFirstMessageForBatchingMs, MaxDeleteMessageCount } from \"./receiver.js\";\nimport type Long from \"long\";\nimport type { ServiceBusMessageImpl, DeadLetterOptions } from \"../serviceBusMessage.js\";\nimport type { RetryConfig, RetryOptions } from \"@azure/core-amqp\";\nimport { Constants, RetryOperationType, retry, ErrorNameConditionMapper } from \"@azure/core-amqp\";\nimport type { OperationOptionsBase } from \"../modelsToBeSharedWithEventHubs.js\";\nimport type { AmqpError } from \"rhea-promise\";\nimport { toProcessingSpanOptions } from \"../diagnostics/instrumentServiceBusMessage.js\";\nimport { tracingClient } from \"../diagnostics/tracing.js\";\nimport { receiverLogger as logger } from \"../log.js\";\nimport { translateServiceBusError } from \"../serviceBusError.js\";\n\n/**\n *A receiver that handles sessions, including renewing the session lock.\n */\nexport interface ServiceBusSessionReceiver extends ServiceBusReceiver {\n /**\n * The session ID.\n */\n readonly sessionId: string;\n\n /**\n * The time in UTC until which the session is locked.\n * Every time `renewSessionLock()` is called, this time gets updated to current time plus the lock\n * duration as specified during the Queue/Subscription creation.\n *\n * Will return undefined until a AMQP receiver link has been successfully set up for the session.\n *\n * @readonly\n */\n readonly sessionLockedUntilUtc: Date;\n\n /**\n * Streams messages to message handlers.\n * @param handlers - A handler that gets called for messages and errors.\n * @param options - Options for subscribe.\n * @returns An object that can be closed, sending any remaining messages to `handlers` and\n * stopping new messages from arriving.\n */\n subscribe(\n handlers: MessageHandlers,\n options?: SubscribeOptions,\n ): {\n /**\n * Causes the subscriber to stop receiving new messages.\n */\n close(): Promise<void>;\n };\n\n /**\n * Renews the lock on the session.\n */\n renewSessionLock(options?: OperationOptionsBase): Promise<Date>;\n\n /**\n * Gets the state of the Session. For more on session states, see\n * {@link https://learn.microsoft.com/azure/service-bus-messaging/message-sessions#message-session-state | Session State}\n * @param options - Options bag to pass an abort signal or tracing options.\n * @returns The state of that session\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while retrieving session state.\n */\n getSessionState(options?: OperationOptionsBase): Promise<any>;\n\n /**\n * Sets the state on the Session. For more on session states, see\n * {@link https://learn.microsoft.com/azure/service-bus-messaging/message-sessions#message-session-state | Session State}\n * @param state - The state that needs to be set.\n * @param options - Options bag to pass an abort signal or tracing options.\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while setting the session state.\n *\n */\n setSessionState(state: any, options?: OperationOptionsBase): Promise<void>;\n}\n\n/**\n * @internal\n */\nexport class ServiceBusSessionReceiverImpl implements ServiceBusSessionReceiver {\n public sessionId: string;\n public identifier: string;\n\n /**\n * Denotes if close() was called on this receiver\n */\n private _isClosed: boolean = false;\n\n private get logPrefix(): string {\n return `[${this._context.connectionId}|session:${this.entityPath}]`;\n }\n\n /**\n * @internal\n * @throws Error if the underlying connection is closed.\n * @throws Error if an open receiver is already existing for given sessionId.\n */\n constructor(\n private _messageSession: MessageSession,\n private _context: ConnectionContext,\n public entityPath: string,\n public receiveMode: \"peekLock\" | \"receiveAndDelete\",\n private _skipParsingBodyAsJson: boolean,\n private _skipConvertingDate: boolean,\n private _retryOptions: RetryOptions = {},\n ) {\n throwErrorIfConnectionClosed(_context);\n this.sessionId = _messageSession.sessionId;\n this.identifier = _messageSession.identifier;\n }\n\n private _throwIfReceiverOrConnectionClosed(): void {\n throwErrorIfConnectionClosed(this._context);\n if (this.isClosed) {\n if (this._isClosed) {\n const errorMessage = getReceiverClosedErrorMsg(this.entityPath, this.sessionId);\n const error = new Error(errorMessage);\n logger.logError(error, `${this.logPrefix} already closed`);\n throw error;\n }\n const amqpError: AmqpError = {\n condition: ErrorNameConditionMapper.SessionLockLostError,\n description: `The session lock has expired on the session with id ${this.sessionId}`,\n };\n throw translateServiceBusError(amqpError);\n }\n }\n\n private _throwIfAlreadyReceiving(): void {\n if (this._isReceivingMessages()) {\n const errorMessage = getAlreadyReceivingErrorMsg(this.entityPath, this.sessionId);\n const error = new Error(errorMessage);\n logger.logError(error, `${this.logPrefix} is already receiving.`);\n throw error;\n }\n }\n\n public get isClosed(): boolean {\n return (\n this._isClosed ||\n !this._context.messageSessions[this._messageSession.name] ||\n !this._messageSession.isOpen()\n );\n }\n\n /**\n * The time in UTC until which the session is locked.\n * Every time `renewSessionLock()` is called, this time gets updated to current time plus the lock\n * duration as specified during the Queue/Subscription creation.\n *\n * When the lock on the session expires\n * - The current receiver can no longer be used to receive more messages.\n * Create a new receiver using `ServiceBusClient.acceptSession()` or `ServiceBusClient.acceptNextSession()`.\n * - Messages that were received in `peekLock` mode with this receiver but not yet settled\n * will land back in the Queue/Subscription with their delivery count incremented.\n *\n * @readonly\n */\n public get sessionLockedUntilUtc(): Date {\n return this._messageSession.sessionLockedUntilUtc;\n }\n\n /**\n * Renews the lock on the session for the duration as specified during the Queue/Subscription\n * creation. You can check the `sessionLockedUntilUtc` property for the time when the lock expires.\n *\n * When the lock on the session expires\n * - The current receiver can no longer be used to receive mode messages.\n * Create a new receiver using `ServiceBusClient.acceptSession()` or `ServiceBusClient.acceptNextSession()`.\n * - Messages that were received in `peekLock` mode with this receiver but not yet settled\n * will land back in the Queue/Subscription with their delivery count incremented.\n *\n * @param options - Options bag to pass an abort signal or tracing options.\n * @returns New lock token expiry date and time in UTC format.\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while renewing session lock.\n */\n async renewSessionLock(options?: OperationOptionsBase): Promise<Date> {\n this._throwIfReceiverOrConnectionClosed();\n\n return tracingClient.withSpan(\n \"ServiceBusSessionReceiver.renewSessionLock\",\n options ?? {},\n (updatedOptions) => {\n const renewSessionLockOperationPromise = async (): Promise<Date> => {\n this._messageSession!.sessionLockedUntilUtc = await this._context\n .getManagementClient(this.entityPath)\n .renewSessionLock(this.sessionId, {\n ...updatedOptions,\n associatedLinkName: this._messageSession.name,\n requestName: \"renewSessionLock\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n });\n return this._messageSession!.sessionLockedUntilUtc!;\n };\n const config: RetryConfig<Date> = {\n operation: renewSessionLockOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<Date>(config);\n },\n );\n }\n\n /**\n * Sets the state on the Session. For more on session states, see\n * {@link https://learn.microsoft.com/azure/service-bus-messaging/message-sessions#message-session-state | Session State}\n * @param state - The state that needs to be set.\n * @param options - Options bag to pass an abort signal or tracing options.\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while setting the session state.\n */\n async setSessionState(state: unknown, options: OperationOptionsBase = {}): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n\n return tracingClient.withSpan(\n \"ServiceBusSessionReceiver.setSessionState\",\n options ?? {},\n (updatedOptions) => {\n const setSessionStateOperationPromise = async (): Promise<void> => {\n await this._context\n .getManagementClient(this.entityPath)\n .setSessionState(this.sessionId!, state, {\n ...updatedOptions,\n associatedLinkName: this._messageSession.name,\n requestName: \"setState\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n });\n return;\n };\n const config: RetryConfig<void> = {\n operation: setSessionStateOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<void>(config);\n },\n );\n }\n\n /**\n * Gets the state of the Session. For more on session states, see\n * {@link https://learn.microsoft.com/azure/service-bus-messaging/message-sessions#message-session-state | Session State}\n * @param options - Options bag to pass an abort signal or tracing options.\n * @returns The state of that session\n * @throws Error if the underlying connection or receiver is closed.\n * @throws `ServiceBusError` if the service returns an error while retrieving session state.\n */\n async getSessionState(options: OperationOptionsBase = {}): Promise<any> {\n this._throwIfReceiverOrConnectionClosed();\n\n return tracingClient.withSpan(\n \"ServiceBusSessionReceiver.getSessionState\",\n options ?? {},\n (updatedOptions) => {\n const getSessionStateOperationPromise = async (): Promise<any> => {\n return this._context\n .getManagementClient(this.entityPath)\n .getSessionState(this.sessionId, {\n ...updatedOptions,\n associatedLinkName: this._messageSession.name,\n requestName: \"getState\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n });\n };\n const config: RetryConfig<any> = {\n operation: getSessionStateOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<any>(config);\n },\n );\n }\n\n async peekMessages(\n maxMessageCount: number,\n options: PeekMessagesOptions = {},\n ): Promise<ServiceBusReceivedMessage[]> {\n this._throwIfReceiverOrConnectionClosed();\n\n const managementRequestOptions = {\n ...options,\n associatedLinkName: this._messageSession.name,\n requestName: \"peekMessages\",\n timeoutInMs: this._retryOptions?.timeoutInMs,\n skipParsingBodyAsJson: this._skipParsingBodyAsJson,\n skipConvertingDate: this._skipConvertingDate,\n };\n // omitMessageBody is available at runtime, but only exported in experimental subpath\n const { fromSequenceNumber, omitMessageBody } = options as PeekMessagesOptions & {\n omitMessageBody: boolean;\n };\n const peekOperationPromise = async (): Promise<ServiceBusReceivedMessage[]> => {\n if (fromSequenceNumber !== undefined) {\n return this._context\n .getManagementClient(this.entityPath)\n .peekBySequenceNumber(\n fromSequenceNumber,\n maxMessageCount,\n this.sessionId,\n omitMessageBody,\n managementRequestOptions,\n );\n } else {\n return this._context\n .getManagementClient(this.entityPath)\n .peekMessagesBySession(\n this.sessionId,\n maxMessageCount,\n omitMessageBody,\n managementRequestOptions,\n );\n }\n };\n\n const config: RetryConfig<ServiceBusReceivedMessage[]> = {\n operation: peekOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<ServiceBusReceivedMessage[]>(config);\n }\n\n async receiveDeferredMessages(\n sequenceNumbers: Long | Long[],\n options: OperationOptionsBase = {},\n ): Promise<ServiceBusReceivedMessage[]> {\n this._throwIfReceiverOrConnectionClosed();\n throwTypeErrorIfParameterMissing(\n this._context.connectionId,\n \"sequenceNumbers\",\n sequenceNumbers,\n );\n throwTypeErrorIfParameterNotLong(\n this._context.connectionId,\n \"sequenceNumbers\",\n sequenceNumbers,\n );\n\n const deferredSequenceNumbers = Array.isArray(sequenceNumbers)\n ? sequenceNumbers\n : [sequenceNumbers];\n const receiveDeferredMessagesOperationPromise = async (): Promise<\n ServiceBusReceivedMessage[]\n > => {\n const deferredMessages = await this._context\n .getManagementClient(this.entityPath)\n .receiveDeferredMessages(deferredSequenceNumbers, this.receiveMode, this.sessionId, {\n ...options,\n associatedLinkName: this._messageSession.name,\n requestName: \"receiveDeferredMessages\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n skipParsingBodyAsJson: this._skipParsingBodyAsJson,\n skipConvertingDate: this._skipConvertingDate,\n });\n return deferredMessages;\n };\n const config: RetryConfig<ServiceBusReceivedMessage[]> = {\n operation: receiveDeferredMessagesOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<ServiceBusReceivedMessage[]>(config);\n }\n\n async deleteMessages(options: DeleteMessagesOptions): Promise<number> {\n this._throwIfReceiverOrConnectionClosed();\n\n const deleteMessagesOperationPromise = (): Promise<number> => {\n return this._context\n .getManagementClient(this.entityPath)\n .deleteMessages(options.maxMessageCount, options?.beforeEnqueueTime, this.sessionId, {\n ...options,\n associatedLinkName: this._messageSession.name,\n requestName: \"deleteMessages\",\n timeoutInMs: this._retryOptions.timeoutInMs,\n });\n };\n const config: RetryConfig<number> = {\n operation: deleteMessagesOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.management,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<number>(config);\n }\n\n async purgeMessages(options?: PurgeMessagesOptions): Promise<number> {\n let deletedCount = await this.deleteMessages({\n maxMessageCount: MaxDeleteMessageCount,\n beforeEnqueueTime: options?.beforeEnqueueTime,\n });\n if (deletedCount === MaxDeleteMessageCount) {\n let batchCount = MaxDeleteMessageCount;\n while (batchCount === MaxDeleteMessageCount) {\n batchCount = await this.deleteMessages({\n maxMessageCount: MaxDeleteMessageCount,\n beforeEnqueueTime: options?.beforeEnqueueTime,\n });\n deletedCount += batchCount;\n }\n }\n return deletedCount;\n }\n\n async receiveMessages(\n maxMessageCount: number,\n options?: ReceiveMessagesOptions,\n ): Promise<ServiceBusReceivedMessage[]> {\n this._throwIfReceiverOrConnectionClosed();\n this._throwIfAlreadyReceiving();\n throwTypeErrorIfParameterMissing(\n this._context.connectionId,\n \"maxMessageCount\",\n maxMessageCount,\n );\n throwTypeErrorIfParameterTypeMismatch(\n this._context.connectionId,\n \"maxMessageCount\",\n maxMessageCount,\n \"number\",\n );\n\n if (isNaN(maxMessageCount) || maxMessageCount < 1) {\n throw new TypeError(InvalidMaxMessageCountError);\n }\n\n const receiveBatchOperationPromise = async (): Promise<ServiceBusReceivedMessage[]> => {\n const receivedMessages = await this._messageSession!.receiveMessages(\n maxMessageCount,\n options?.maxWaitTimeInMs ?? Constants.defaultOperationTimeoutInMs,\n defaultMaxTimeAfterFirstMessageForBatchingMs,\n options ?? {},\n );\n\n return receivedMessages;\n };\n const config: RetryConfig<ServiceBusReceivedMessage[]> = {\n operation: receiveBatchOperationPromise,\n connectionId: this._context.connectionId,\n operationType: RetryOperationType.receiveMessage,\n retryOptions: this._retryOptions,\n abortSignal: options?.abortSignal,\n };\n return retry<ServiceBusReceivedMessage[]>(config).catch((err) => {\n throw translateServiceBusError(err);\n });\n }\n\n subscribe(\n handlers: MessageHandlers,\n options?: SubscribeOptions,\n ): {\n close(): Promise<void>;\n } {\n // TODO - receiverOptions for subscribe??\n assertValidMessageHandlers(handlers);\n\n options = options ?? {};\n\n const processError = wrapProcessErrorHandler(handlers);\n\n this._registerMessageHandler(\n async (message: ServiceBusMessageImpl) => {\n return tracingClient.withSpan(\n \"SessionReceiver.process\",\n options ?? {},\n () => handlers.processMessage(message),\n toProcessingSpanOptions(message, this, this._context.config, \"process\"),\n );\n },\n processError,\n options,\n );\n\n return {\n close: async (): Promise<void> => {\n return this._messageSession?.receiverHelper.suspend();\n },\n };\n }\n\n /**\n * Registers handlers to deal with the incoming stream of messages over an AMQP receiver link\n * from a Queue/Subscription.\n * To stop receiving messages, call `close()` on the SessionReceiver.\n *\n * Throws an error if there is another receive operation in progress on the same receiver. If you\n * are not sure whether there is another receive operation running, check the `isReceivingMessages`\n * property on the receiver.\n *\n * @param onMessage - Handler for processing each incoming message.\n * @param onError - Handler for any error that occurs while receiving or processing messages.\n * @param options - Options to control whether messages should be automatically completed\n * or if the lock on the session should be automatically renewed. You can control the\n * maximum number of messages that should be concurrently processed. You can\n * also provide a timeout in milliseconds to denote the amount of time to wait for a new message\n * before closing the receiver.\n *\n * @throws Error if the underlying connection or receiver is closed.\n * @throws Error if the receiver is already in state of receiving messages.\n * @throws `ServiceBusError` if the service returns an error while receiving messages. These are bubbled up to be handled by user provided `onError` handler.\n */\n private _registerMessageHandler(\n onMessage: OnMessage,\n onError: OnError,\n options: SubscribeOptions,\n ): void {\n this._throwIfReceiverOrConnectionClosed();\n this._throwIfAlreadyReceiving();\n const connId = this._context.connectionId;\n throwTypeErrorIfParameterMissing(connId, \"onMessage\", onMessage);\n throwTypeErrorIfParameterMissing(connId, \"onError\", onError);\n if (typeof onMessage !== \"function\") {\n throw new TypeError(\"The parameter 'onMessage' must be of type 'function'.\");\n }\n if (typeof onError !== \"function\") {\n throw new TypeError(\"The parameter 'onError' must be of type 'function'.\");\n }\n\n try {\n this._messageSession.subscribe(onMessage, onError, options);\n } catch (err: any) {\n onError({\n error: err,\n errorSource: \"receive\",\n entityPath: this.entityPath,\n fullyQualifiedNamespace: this._context.config.host,\n identifier: this.identifier,\n });\n }\n }\n\n getMessageIterator(\n options?: GetMessageIteratorOptions,\n ): AsyncIterableIterator<ServiceBusReceivedMessage> {\n return getMessageIterator(this, options);\n }\n\n async completeMessage(message: ServiceBusReceivedMessage): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n throwErrorIfInvalidOperationOnMessage(message, this.receiveMode, this._context.connectionId);\n const msgImpl = message as ServiceBusMessageImpl;\n return completeMessage(msgImpl, this._context, this.entityPath, this._retryOptions);\n }\n\n async abandonMessage(\n message: ServiceBusReceivedMessage,\n propertiesToModify?: { [key: string]: number | boolean | string | Date | null },\n ): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n throwErrorIfInvalidOperationOnMessage(message, this.receiveMode, this._context.connectionId);\n const msgImpl = message as ServiceBusMessageImpl;\n return abandonMessage(\n msgImpl,\n this._context,\n this.entityPath,\n propertiesToModify,\n this._retryOptions,\n );\n }\n\n async deferMessage(\n message: ServiceBusReceivedMessage,\n propertiesToModify?: { [key: string]: number | boolean | string | Date | null },\n ): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n throwErrorIfInvalidOperationOnMessage(message, this.receiveMode, this._context.connectionId);\n const msgImpl = message as ServiceBusMessageImpl;\n return deferMessage(\n msgImpl,\n this._context,\n this.entityPath,\n propertiesToModify,\n this._retryOptions,\n );\n }\n\n async deadLetterMessage(\n message: ServiceBusReceivedMessage,\n options?: DeadLetterOptions & { [key: string]: number | boolean | string | Date | null },\n ): Promise<void> {\n this._throwIfReceiverOrConnectionClosed();\n throwErrorIfInvalidOperationOnMessage(message, this.receiveMode, this._context.connectionId);\n const msgImpl = message as ServiceBusMessageImpl;\n return deadLetterMessage(msgImpl, this._context, this.entityPath, options, this._retryOptions);\n }\n\n async renewMessageLock(): Promise<Date> {\n throw new Error(\"Renewing message lock is an invalid operation when working with sessions.\");\n }\n\n async close(): Promise<void> {\n try {\n await this._messageSession.close();\n } catch (err: any) {\n logger.logError(\n err,\n \"%s An error occurred while closing the SessionReceiver for session %s\",\n this.logPrefix,\n this.sessionId,\n );\n throw err;\n } finally {\n this._isClosed = true;\n }\n }\n\n /**\n * Indicates whether the receiver is currently receiving messages or not.\n * When this returns true, new `registerMessageHandler()` or `receiveMessages()` calls cannot be made.\n */\n private _isReceivingMessages(): boolean {\n return this._messageSession ? this._messageSession.isReceivingMessages : false;\n }\n}\n"]}
|
package/dist/commonjs/sender.js
CHANGED
|
@@ -16,6 +16,16 @@ const instrumentServiceBusMessage_js_1 = require("./diagnostics/instrumentServic
|
|
|
16
16
|
* @internal
|
|
17
17
|
*/
|
|
18
18
|
class ServiceBusSenderImpl {
|
|
19
|
+
_context;
|
|
20
|
+
_entityPath;
|
|
21
|
+
identifier;
|
|
22
|
+
_retryOptions;
|
|
23
|
+
/**
|
|
24
|
+
* Denotes if close() was called on this sender
|
|
25
|
+
*/
|
|
26
|
+
_isClosed = false;
|
|
27
|
+
_sender;
|
|
28
|
+
entityPath;
|
|
19
29
|
get logPrefix() {
|
|
20
30
|
return `[${this._context.connectionId}|sender:${this.entityPath}]`;
|
|
21
31
|
}
|
|
@@ -26,10 +36,6 @@ class ServiceBusSenderImpl {
|
|
|
26
36
|
constructor(_context, _entityPath, retryOptions = {}, identifier) {
|
|
27
37
|
this._context = _context;
|
|
28
38
|
this._entityPath = _entityPath;
|
|
29
|
-
/**
|
|
30
|
-
* Denotes if close() was called on this sender
|
|
31
|
-
*/
|
|
32
|
-
this._isClosed = false;
|
|
33
39
|
(0, errors_js_1.throwErrorIfConnectionClosed)(_context);
|
|
34
40
|
this.entityPath = _entityPath;
|
|
35
41
|
this.identifier = (0, utils_js_1.ensureValidIdentifier)(this.entityPath, identifier);
|
|
@@ -55,9 +61,12 @@ class ServiceBusSenderImpl {
|
|
|
55
61
|
// Case 1: Single message
|
|
56
62
|
(0, errors_js_1.throwIfNotValidServiceBusMessage)(messages, errors_js_1.errorInvalidMessageTypeSingleOrArray);
|
|
57
63
|
const originalMessage = messages;
|
|
58
|
-
const { message, spanContext } = (0, instrumentServiceBusMessage_js_1.instrumentMessage)(originalMessage, options
|
|
64
|
+
const { message, spanContext } = (0, instrumentServiceBusMessage_js_1.instrumentMessage)(originalMessage, options ?? {}, this.entityPath, this._context.config.host, "publish");
|
|
59
65
|
const spanLinks = spanContext ? [{ tracingContext: spanContext }] : [];
|
|
60
|
-
return tracing_js_1.tracingClient.withSpan("ServiceBusSender.send", options
|
|
66
|
+
return tracing_js_1.tracingClient.withSpan("ServiceBusSender.send", options ?? {}, (updatedOptions) => this._sender.send(message, updatedOptions), {
|
|
67
|
+
spanLinks,
|
|
68
|
+
...(0, tracing_js_1.toSpanOptions)({ entityPath: this.entityPath, host: this._context.config.host }, "publish", "client"),
|
|
69
|
+
});
|
|
61
70
|
}
|
|
62
71
|
let batch;
|
|
63
72
|
if (isServiceBusMessageBatch(messages)) {
|
|
@@ -80,7 +89,10 @@ class ServiceBusSenderImpl {
|
|
|
80
89
|
tracingContext,
|
|
81
90
|
};
|
|
82
91
|
});
|
|
83
|
-
return tracing_js_1.tracingClient.withSpan("ServiceBusSender.send", options
|
|
92
|
+
return tracing_js_1.tracingClient.withSpan("ServiceBusSender.send", options ?? {}, (updatedOptions) => this._sender.sendBatch(batch, updatedOptions), {
|
|
93
|
+
spanLinks,
|
|
94
|
+
...(0, tracing_js_1.toSpanOptions)({ entityPath: this.entityPath, host: this._context.config.host }, "publish", "client"),
|
|
95
|
+
});
|
|
84
96
|
}
|
|
85
97
|
async createMessageBatch(options) {
|
|
86
98
|
this._throwIfSenderOrConnectionClosed();
|
|
@@ -98,14 +110,19 @@ class ServiceBusSenderImpl {
|
|
|
98
110
|
const scheduleMessageOperationPromise = async () => {
|
|
99
111
|
return this._context
|
|
100
112
|
.getManagementClient(this._entityPath)
|
|
101
|
-
.scheduleMessages(scheduledEnqueueTimeUtc, messagesToSchedule,
|
|
113
|
+
.scheduleMessages(scheduledEnqueueTimeUtc, messagesToSchedule, {
|
|
114
|
+
...options,
|
|
115
|
+
associatedLinkName: this._sender.name,
|
|
116
|
+
requestName: "scheduleMessages",
|
|
117
|
+
timeoutInMs: this._retryOptions.timeoutInMs,
|
|
118
|
+
});
|
|
102
119
|
};
|
|
103
120
|
const config = {
|
|
104
121
|
operation: scheduleMessageOperationPromise,
|
|
105
122
|
connectionId: this._context.connectionId,
|
|
106
123
|
operationType: core_amqp_1.RetryOperationType.management,
|
|
107
124
|
retryOptions: this._retryOptions,
|
|
108
|
-
abortSignal: options
|
|
125
|
+
abortSignal: options?.abortSignal,
|
|
109
126
|
};
|
|
110
127
|
return (0, core_amqp_1.retry)(config);
|
|
111
128
|
}
|
|
@@ -119,14 +136,19 @@ class ServiceBusSenderImpl {
|
|
|
119
136
|
const cancelSchedulesMessagesOperationPromise = async () => {
|
|
120
137
|
return this._context
|
|
121
138
|
.getManagementClient(this._entityPath)
|
|
122
|
-
.cancelScheduledMessages(sequenceNumbersToCancel,
|
|
139
|
+
.cancelScheduledMessages(sequenceNumbersToCancel, {
|
|
140
|
+
...options,
|
|
141
|
+
associatedLinkName: this._sender.name,
|
|
142
|
+
requestName: "cancelScheduledMessages",
|
|
143
|
+
timeoutInMs: this._retryOptions.timeoutInMs,
|
|
144
|
+
});
|
|
123
145
|
};
|
|
124
146
|
const config = {
|
|
125
147
|
operation: cancelSchedulesMessagesOperationPromise,
|
|
126
148
|
connectionId: this._context.connectionId,
|
|
127
149
|
operationType: core_amqp_1.RetryOperationType.management,
|
|
128
150
|
retryOptions: this._retryOptions,
|
|
129
|
-
abortSignal: options
|
|
151
|
+
abortSignal: options?.abortSignal,
|
|
130
152
|
};
|
|
131
153
|
return (0, core_amqp_1.retry)(config);
|
|
132
154
|
}
|