当前位置: 首页 > 知识库问答 >
问题:

Azure服务总线,一次推送会产生300条具有相同ID的排队消息

郭元凯
2023-03-14
    var rec = messageSession as MessageReceiver;

    if(rec != null)
    {
        rec.RetryPolicy = Microsoft.ServiceBus.RetryPolicy.NoRetry;
    }

    _event.PushEvent(new Event
    {
        EventName = $"{message.MessageId} - {message.SystemProperties.DeliveryCount}",
        EventData = string.Empty,
        DateOfEvent = DateTime.Now, 
        EventLevel = 1,
        System = Systems.CRMSQL
    }).Wait();
    
    // Manually close message so it won't requeue
    messageSession.CloseAsync().Wait();
    EventName EventData EventLevel DateOfEvent
    5f353e313f104c298bdffa08030d9daa - 1 1 2020-09-03 01:17:47.903
    5f353e313f104c298bdffa08030d9daa - 1 1 2020-09-03 01:17:46.083
    5f353e313f104c298bdffa08030d9daa - 1 1 2020-09-03 01:17:45.227

共有1个答案

彭衡
2023-03-14

//手动关闭消息,使其不会重新请求MessageSession.CloseSync().Wait()

该函数将自动完成传入消息。如果您在传入消息完成之前关闭接收器,则消息将被重新传递maxDeliveryCount次,您将看到重复的消息。

不确定_event.pushevent是什么,但如果它是您的代码,您应该详细说明它是做什么的。此外,不要强制异步代码使用.wait()运行。而是使用async/await

 类似资料:
  • 我的设置: 我创建了一个没有启用会话的Azure服务总线队列 我有一个使用触发器 触发器间隔为 我的结果: 我正在以超过15秒的速度将消息放入队列 我的Azure逻辑应用触发器一次拾取多个队列消息,比每15秒拾取一条消息快得多 我的问题: 此连接器的触发器是否设计为一次拾取多条排队消息(在?)

  • 我正在为Azure服务总线使用最新的Java绑定(V3.1.3):https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/servicebus 当我创建一个新的队列客户端,计划一条消息,然后取消它... ...代码似乎按预期工作:活动消息计数变为0。但是一旦被调度的消息到达它应该被调度的时间(我测试了10秒和100秒以后),消息有时会

  • 我正在使用Azure服务总线队列。但是我不能使用“获取所有队列消息(peek Lock):微软内置于api”从队列中获取所有消息。 有没有办法获取所有队列消息? {"$连接":{"值":{"servicebus_1":{"连接ID":"/订阅/c776fex3-6aec-4722-b099-b054c267b240/资源组/Plugin-Resources/提供者/Microsoft.网络/连接/

  • 我有一个windows服务,它侦听Azure服务总线队列消息,以便从我的WebApi应用程序分发处理。此外,我还需要处理重复性任务(每晚/每周),我认为最好使用相同的系统来处理这些任务。 例如,假设我有一个“CleanupDb”队列,每天午夜删除过时的DB节点: 理论上这应该行得通,但我觉得我错过了一个更明显的处理方法。有没有更好的办法?

  • 我正在使用带有.NET核心的Azure服务总线 在我们的应用程序中,我们正在向服务总线发送会话消息。每当我们收到带有session-Id的取消请求时,我们需要删除/删除/完成带有该特定sessionId的消息,而不需要进行任何进一步的处理 但我得到了错误-请求的会话'session-name'不能被接受。它可能被另一个接收器锁定。

  • 我试图使用服务总线队列作为IoT中心终结点将消息从IoT中心路由到函数应用。发送到IoT中心的消息在IoT中心中注册,但不会路由到服务总线队列。当我监视服务总线队列时,我只看到成功的请求。 我使用以下标准实现了两个路由规则: 和 我用Azure提供的示例测试了第二个,结果与之匹配。它们似乎都没有将消息转发到服务总线。 在下面找到一条示例消息,我正在尝试发送该消息。