向基于会话的服务总线队列发送消息不可靠

问题描述 投票:0回答:1

有人在使用 azure 函数向服务总线中启用会话的队列发送消息时遇到过可靠性问题吗?

我们有一个 http 触发函数,它使用服务总线输出绑定将消息添加到队列

由于某种原因,消息并不总是被发送和接收?

我们需要一种允许我们快速对大量消息进行排队的方法

保罗

azure azure-functions azureservicebus
1个回答
0
投票

我使用以下代码将消息发送到启用服务总线会话的队列。

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Azure.Messaging.ServiceBus;

namespace _78259611
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous,"post", Route = null)] HttpRequest req,
            [ServiceBus("myqueue", Connection = "ServiceBusConnection")] IAsyncCollector<ServiceBusMessage> outputSbQueue,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            var message = new ServiceBusMessage(requestBody);
            message.SessionId = "{session_id}";

            // Add message to the session-enabled queue
            await outputSbQueue.AddAsync(message);

            return new OkObjectResult("Message sent successfully.");
        }
    }
}

.csproj-

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <AzureFunctionsVersion>v4</AzureFunctionsVersion>
    <RootNamespace>_78259611</RootNamespace>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Azure.Messaging.ServiceBus" Version="7.17.4" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="5.14.0" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.3.0" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>
  • 我能够接收服务总线队列中的所有消息。

enter image description here

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.