gpt4 book ai didi

c# - 服务总线主题插入了相同 MessageId 的重复消息记录

转载 作者:行者123 更新时间:2023-12-03 02:58:57 26 4
gpt4 key购买 nike

[FunctionName("MyProcess")]
public static void Run(BrokeredMessage currentMessage,[ServiceBus("mytopic",
Connection = "ConnServiceBus")]ICollector<BrokeredMessage> mytopicDemo, TraceWriter log)
{
string messageBody = currentMessage.GetBody<string>();
BrokeredMessage brokeredMessage = new BrokeredMessage(result);
//extracted Id and Name from body using some code for simplicity making it as messageBody.Id and messageBody.Name
brokeredMessage.Properties.Add("Id", messageBody.Id);
brokeredMessage.Properties.Add("Name", messageBody.Name);
brokeredMessage.MessageId = "ZZ"; // I also tried GUID here messageBody.Id
mytopicDemo.Add(brokeredMessage);

...

服务总线无法识别重复的 messageId 消息。

为什么为同一个messageId插入多条记录?

如果已经存在,应避免插入重复记录。 enter image description here

最佳答案

可能的原因可能是

  • 如果应用程序在发送后立即遇到 fatal error 一条消息,并且错误地重新启动了应用程序实例认为之前的消息传递没有发生,后续的消息传递send 导致同一条消息在系统中出现两次。

  • 客户端或网络级别的错误也可能导致
    发生在更早的时刻,并且将发送的消息提交到
    队列,确认未成功返回
    客户。这种情况使客户对结果产生怀疑发送操作。

启用重复检测可以通过丢弃重复消息来解决此问题。

队列和主题的重复检测时间历史默认为 30 秒,最大值为 7 天。

重复检测时间历史必须很大才能检测到尽可能多的重复消息。另请注意,窗口的大小直接影响队列(和主题)吞吐量。

点击here了解更多信息。

关于c# - 服务总线主题插入了相同 MessageId 的重复消息记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50869278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com