public async Task RunAsync( [ServiceBusTrigger("%QueueListenerName%", Connection = "ServiceBusConnectionString", IsSessionsEnabled = true)] byte[] message, FunctionContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } var logger = context.GetLogger("ReplyToRequestFromPostOffice"); logger.LogInformation($"C# ServiceBus queue trigger function processesing message: {message}"); try { var bundleRequestDto = _requestBundleParser.Parse(message); var requestDataBundleResponseDto = await CreateResponseAsync(bundleRequestDto).ConfigureAwait(false); await _responseSender.SendAsync(requestDataBundleResponseDto).ConfigureAwait(false); } catch (MessageHubStorageException e) { logger.LogError("Error Processing message: {0}", e); throw; } }
public async Task <DataBundleResponseDto?> SendAsync( DataBundleRequestDto dataBundleRequestDto, DomainOrigin domainOrigin) { ArgumentNullException.ThrowIfNull(dataBundleRequestDto, nameof(dataBundleRequestDto)); var bytes = _requestBundleParser.Parse(dataBundleRequestDto); var sessionId = dataBundleRequestDto.RequestId.ToString(); var replyQueue = GetReplyQueueName(domainOrigin); var targetQueue = GetQueueName(domainOrigin); var serviceBusMessage = new ServiceBusMessage(bytes) { SessionId = sessionId, ReplyToSessionId = sessionId, ReplyTo = replyQueue, TimeToLive = _peekRequestConfig.PeekTimeout ?? _defaultTimeout }.AddRequestDataBundleIntegrationEvents(dataBundleRequestDto.IdempotencyId); var serviceBusClient = _messageBusFactory.GetSenderClient(targetQueue); await serviceBusClient .PublishMessageAsync <ServiceBusMessage>(serviceBusMessage) .ConfigureAwait(false); await using var receiverMessageBus = await _messageBusFactory .GetSessionReceiverClientAsync(replyQueue, sessionId) .ConfigureAwait(false); var response = await receiverMessageBus .ReceiveMessageAsync <ServiceBusMessage>(_peekRequestConfig.PeekTimeout ?? _defaultTimeout) .ConfigureAwait(false); if (response == null) { return(null); } return(_responseBundleParser.Parse(response.Body.ToArray())); }