向我的Azure服务总线队列添加消息不会返回任何值

时间:2018-07-09 06:29:53

标签: c# azure asynchronous azureservicebus azure-servicebus-queues

我正在向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
}

仅供参考-有趣的是,在此方法上方,我还有另一种在另一个队列上执行相同操作的方法,并且效果很好!因此,我正在寻找名称是否拼写错误或配置不正确的问题,但令人担忧的是,如果是这种情况,我认为我会看到异常或消息不会放在队列中?

1 个答案:

答案 0 :(得分:0)

是的,可以为不同队列中的每个消息使用相同的“ MessageId”。

queueClient.ScheduleMessageAsync() 

返回发送到队列的消息的“ SequenceNumber”。

在处理异步调用时可能存在问题。检查父方法是否是异步方法。