我像这样将消息传递到我的 Azure 服务总线队列,其中“MessageId”值是一个数字字符串。'345'。我在 Azure 门户仪表板的队列中看到它,当我在服务总线资源管理器中查看消息时,我看到消息 id 作为我正在传递的 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
函数中的 the 是0
ornull
,具体取决于我正在调用的函数。
这是给我这个问题的一个函数的前几行代码。该事件始终为 null 并引发异常,因为myQueueItem
始终为null
or0
。
我想,我以前有这个工作,但现在我认为每次触发我的函数时都会进行更改并抛出异常!
问题 -myQueueItem
当我创建消息并将消息放入队列时,我传递的不是 messageId 吗?
[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);