gpt4 book ai didi

c# - 在不同的 Azure 服务总线队列中使用相同的消息 ID 会导致错误

转载 作者:行者123 更新时间:2023-11-30 12:20:32 25 4
gpt4 key购买 nike

我在将预定消息添加到 Azure 服务总线队列的函数中遇到问题。创建方法调用方法时就poop出来

var sendCodeSequence = await queueClient.ScheduleMessageAsync(message, 
new DateTimeOffset(endTime));

即使消息被添加到队列中,我的 Controller 中的堆栈也不会抛出任何异常!

我的问题?

  1. 如果我在同一服务总线上的不同队列中多次使用相同的消息 ID,即使它们都有不同的序列 ID,在每个队列上创建和删除它们时是否会遇到问题?

  2. 我在代理消息构造函数和消息 id 属性中使用消息 id,这可以吗,或者这会导致添加更多消息并将其从队列中删除的问题吗?

例如。我在同一个服务总线命名空间上有 5 个不同的队列。并且可能会添加 5 条不同的消息,每个队列一条,所有消息都具有相同的代理消息 ID。那么,不知道这是否会导致任何问题?

这是我使用事件 ID 作为消息 ID 将计划消息添加到队列的方法

public async Task <long> CreateHostPointCodeMessage(int eventId, YogaSpaceDuration duration, DateTime utcEventDateTime) {
string serviceBusConnectionString = System.Configuration.ConfigurationManager.AppSettings["ServiceBusConnectionString"];
string queueName = System.Configuration.ConfigurationManager.AppSettings["PreEventPointsCodeQueueName"];

var queueClient = QueueClient.CreateFromConnectionString(serviceBusConnectionString, queueName);
int length = Convert.ToInt16(EnumHelper.GetDisplayName(duration).Split(' ')[0]);
var endTime = DateTime.SpecifyKind(utcEventDateTime.AddMinutes(length).AddMinutes(-5), DateTimeKind.Utc);

BrokeredMessage message = new BrokeredMessage(eventId.ToString());
message.MessageId = eventId.ToString();
message.ScheduledEnqueueTimeUtc = endTime;

var sendCodeSequence = await queueClient.ScheduleMessageAsync(message, new DateTimeOffset(endTime));
await queueClient.CloseAsync();

return sendCodeSequence;
}

仅供引用 - 我正在使用“Microsoft.ServiceBus.Messaging”将消息发送到队列,但根据此 MS article我应该使用“Microsoft.Azure.ServiceBus”,我不知道这是否有什么区别?

最佳答案

将具有相同 id 的消息发送到命名空间下的不同队列没有任何问题。

即使您可以将任意数量的具有相同 id 的消息发送到同一个队列,除非 RequiresDuplicateDetection队列的属性设置为“True”。

仅对于启用了“RequiresDuplicateDetection”属性的队列,具有重复 ID 的消息将会丢失。

关于c# - 在不同的 Azure 服务总线队列中使用相同的消息 ID 会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51253724/

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