У меня есть API, который будет вызывать Azure Topic для планирования сообщения. Есть ли способ получить это сообщение до запланированного времени? Например, в приведенном ниже коде я планирую отправить сообщение в лазурную тему, и оно будет поставлено в очередь через 60 минут/1 час. Есть ли способ получить это сообщение до 1 часа?
string queueName = "topic";
var client = new ServiceBusClient("", new ServiceBusClientOptions()
{
TransportType = ServiceBusTransportType.AmqpWebSockets
});
// create the sender
ServiceBusSender sender = client.CreateSender(queueName);
// create a message that we can send. UTF-8 encoding is used when providing a string.
ServiceBusMessage message = new ServiceBusMessage($"Hello world cancel 13 {DateTime.Now}");
// add 5 minutes delay
long seq = await sender.ScheduleMessageAsync(message,
DateTimeOffset.Now.AddMinutes(60)
);
Порядковый номер сообщения, который вы получаете при планировании, подходит для отмены, но не позволяет получить это сообщение раньше. Служба не позволяет раннее получение, как и все, что получает сообщения, чтобы получать активные сообщения (не в будущем). Для этого сценария я бы предложил хранить данные в базе данных и не использовать очередь в качестве базы данных.
если вы делаете это для тестирования, вы можете сделать это с помощью Service Bus Explorer или на портале Azure, отправив копию сообщения без времени расписания, а затем удалив оригинал. Это полезно только для эпизодических сценариев.