2015-05-11 1 views
0

В настоящее время я добавляю видеоуслуги в приложение с использованием медиа-сервисов Azure и Azure Storage с C# web api. Процесс загрузки, кажется, работает правильно, и я вижу, где успешно завершена работа с администратором. консоль.Сообщения о уведомлении Azure никогда не попадают в очередь уведомлений с использованием Media Services

Однако, если я запускаю приложение под отладчиком, я вижу, где сообщения добавляются в очередь для фактической обработки видео, но я никогда не получаю никаких сообщений в очереди уведомлений. Я продолжаю просматривать код, но я не вижу ничего, что кажется отключенным. Кто-нибудь сталкивался с этим раньше или имел какое-либо представление о том, что может быть проблемой? В настоящее время я тестирую в режиме отладки, когда мои строки подключения установлены на UseDevelopmentStorage=true.

// create a NotificationEndPoint queue based on the endPointAddress 
string endPointAddress = "queuename"; 

// setup the notificationEndPoint based on the queue and endPointAddress 
this.notificationEndPoint = this._context.NotificationEndPoints.Create(Guid.NewGuid().ToString(), NotificationEndPointType.AzureQueue, endPointAddress); 

if (this.notificationEndPoint != null) 
{ 
    job.JobNotificationSubscriptions.AddNew(NotificationJobState.All, this.notificationEndPoint); 
    await job.SubmitAsync().ConfigureAwait(false); 
     . 
     . 
     . 



Here is the message object: 
public class VideoJobNotificationMessage : AzureQueueMessage 
{ 
// MessageVersion is used for version control. 
public string MessageVersion { get; set; } 

// Type of the event. Valid values are 
// JobStateChange and NotificationEndpointRegistration. 
public string EventType { get; set; } 

// ETag is used to help the customer detect if 
// the message is a duplicate of another message previously sent. 
public string ETag { get; set; } 

// Time of occurrence of the event. 
public string TimeStamp { get; set; } 

// Collection of values specific to the event. 
public IDictionary<string, object> Properties { get; set; } 
} 

ответ

0

Просто запустите проверочный тест ShouldReceiveNotificationsForCompeletedJob от https://github.com/Azure/azure-sdk-for-media-services/blob/dev/test/net/Scenario/JobTests.cs который проверяет уведомления рабочего процесса. Тест проходит в дата-центре US WEST.

Обратите внимание, что уведомления о вакансиях через azure storage queue не предназначены для реального времени, и, как вы можете видеть, в очереди есть несколько минут задержки между сообщениями.

Оклейка код относящийся к очереди создания:

string endPointAddress = Guid.NewGuid().ToString(); 
       CloudQueueClient client = CloudStorageAccount.Parse(WindowsAzureMediaServicesTestConfiguration.ClientStorageConnectionString).CreateCloudQueueClient(); 
       CloudQueue queue = client.GetQueueReference(endPointAddress); 
       queue.CreateIfNotExists(); 
       string endPointName = Guid.NewGuid().ToString(); 
       INotificationEndPoint notificationEndPoint = _mediaContext.NotificationEndPoints.Create(endPointName, NotificationEndPointType.AzureQueue, endPointAddress); 
       Assert.IsNotNull(notificationEndPoint); 
job.JobNotificationSubscriptions.AddNew(NotificationJobState.All, notificationEndPoint); 

....... 

      job.Submit(); 

      Assert.IsTrue(job.JobNotificationSubscriptions.Count > 0); 

      WaitForJob(job.Id, JobState.Finished, VerifyAllTasksFinished); 
      Thread.Sleep((int)TimeSpan.FromMinutes(5).TotalMilliseconds); 

      Assert.IsNotNull(queue); 
      Assert.IsTrue(queue.Exists()); 
      IEnumerable<CloudQueueMessage> messages = queue.GetMessages(10); 
      Assert.IsTrue(messages.Any()); 
      Assert.AreEqual(4, messages.Count(), "Expecting to have 4 notifications messages"); 
+0

Должен ли я выглядеть, чтобы добавить этот файл и связанные с ним файлы в мой тестовый проект? – user1790300

+0

Вы можете просто клонировать репозиторий. Добавьте сведения о своей учетной записи и оконечной точке очереди в app.config и отлаживайте ее. Или вы можете добавить чек в свой код, чтобы убедиться, что вы создаете очередь, если она не существует, и добавьте несколько минут сна, прежде чем проверять, что уведомление получено. Как я уже говорил, вы не должны ожидать мгновенного уведомления после завершения работы, уведомление может появиться через несколько минут. Статья, описывающая функцию уведомления -http: //azure.microsoft.com/en-us/documentation/articles/media-services-check-job-progress/#check_progress_with_queues –

+0

Он продолжает терпеть неудачу в этой строке Assert.IsTrue (сообщения. Любые()). Кажется, что сообщения не входят в очередь. Я даже установил задержку Thread.Sleep в течение 10 минут, все еще нет сообщений в очереди. Что может быть причиной этого? – user1790300

Смежные вопросы