Я передаю сообщения в свою очередь служебной шины Azure следующим образом, где значение «MessageId» представляет собой строку числа ex. '345'. Я вижу его в очереди на панели мониторинга портала Azure, и когда я просматриваю сообщение в Service Bus Explorer, я вижу идентификатор сообщения как eventId, который я передаю.
Message message = new Message
{
MessageId = eventId.ToString(), // passing it a value of '123'
ScheduledEnqueueTimeUtc = enqueuedTime
};
var sendCodeSequence = await queueClient.ScheduleMessageAsync(message, new DateTimeOffset(enqueuedTime));
Но когда моя функция запускается, я получаю исключение, сообщающее, что myQueueItem
из функции имеет значение 0
или null
, в зависимости от того, какую функцию я вызываю.
Вот первая пара строк кода для одной из функций, которая дает мне эту проблему. Событие всегда равно нулю и выдает исключение, потому что myQueueItem
всегда null
или 0
.
Раньше у меня это работало, но теперь я думаю, что были внесены изменения и выбрасывались исключения при каждом срабатывании моих функций!
Вопрос - не является ли myQueueItem
сообщением, которое я передаю, когда создаю и помещаю сообщение в очередь?
[FunctionName("CancelEvent")]
public static void Run([ServiceBusTrigger("canceleventqueue", AccessRights.Manage, Connection = "events2017_RootManageSharedAccessKey_SERVICEBUS")]string myQueueItem, TraceWriter log, ExecutionContext context)
{
try
{
log.Info($"Cancel event started id: {myQueueItem}");
var eventId = Convert.ToInt32(myQueueItem);
using (var dbContext = new EventContext(myDatabaseConnectionString))
{
var event = dbContext.Events.Where(i => i.EventId == eventId).FirstOrDefault();
if (Event == null)
throw new Exception("no event with this id: " + myQueueItem);