我正在向Azure服务总线队列添加一条消息,并返回其Guid以保存在数据库中,但是由于某种原因,我要么修改了某些内容,要么一开始它始终无法正常工作。问题-我可以在多个队列中但在同一总线上有多个具有相同ID的消息ID吗?我在同一条总线上有5个队列,每个队列可能有一条消息,其消息ID为ex。 100
var sequenceToCancel =等待queueClient.ScheduleMessageAsync(message,endTime);
不返回任何东西!
整个堆栈跟踪有点冒出来,而没有完成代码堆栈中的上述任何操作!
该消息被放入服务总线队列中,但该方法未返回! 我尝试绕过它,但是它什么也没做,并且控制器中没有异常。整个堆栈一直到控制器都没问题!因此,控制器中此方法运行后没有任何代码。
这是什么原因导致的?如何检查是否有任何错误?
这是完整的方法。
public async Task < long > CreatePostEventEmailMessage(int eventId, DateTime eventDateTime, YogaSpaceDuration duration, DateTime utcEventDateTime) {
string serviceBusConnectionString = System.Configuration.ConfigurationManager.AppSettings["ServiceBusConnectionString"];
string queueName = System.Configuration.ConfigurationManager.AppSettings["PostEventEmailQueueName"];
var queueClient = QueueClient.CreateFromConnectionString(serviceBusConnectionString, queueName);
int length = Convert.ToInt32(EnumHelper.GetDisplayName(duration).Split(' ')[0]); // end of class
var endTime = DateTime.SpecifyKind(utcEventDateTime.AddMinutes(length).AddMinutes(1), DateTimeKind.Utc);
BrokeredMessage message = new BrokeredMessage(eventId.ToString());
message.MessageId = eventId.ToString();
message.ScheduledEnqueueTimeUtc = endTime;
var sequenceToCancel = await queueClient.ScheduleMessageAsync(message, new DateTimeOffset(endTime));
await queueClient.CloseAsync(); // this line never gets hit
return sequenceToCancel; // this line never gets hit
}
仅供参考-有趣的是,在此方法上方,我还有另一种在另一个队列上执行相同操作的方法,并且效果很好!因此,我正在寻找名称是否拼写错误或配置不正确的问题,但令人担忧的是,如果是这种情况,我认为我会看到异常或消息不会放在队列中?
答案 0 :(得分:0)
是的,可以为不同队列中的每个消息使用相同的“ MessageId”。
queueClient.ScheduleMessageAsync()
返回发送到队列的消息的“ SequenceNumber”。
在处理异步调用时可能存在问题。检查父方法是否是异步方法。