У меня есть код C # для отправки сообщения в тему служебной шины следующим образом:
public class ServiceBusTopicsRepository : IServiceBusTopicsRepository
{
private TopicClient _topicClient;
public ServiceBusTopicsRepository(string connectionString, string entityPath)
{
_topicClient = new TopicClient(connectionString, entityPath);
}
public async Task AddMessageAsync(SyncJob job)
{
await _topicClient.SendAsync(CreateMessage(job));
}
private Message CreateMessage(SyncJob job)
{
var body = JsonSerializer.Serialize(job);
var message = new Message
{
Body = Encoding.UTF8.GetBytes(body)
};
message.MessageId = "PK_RK";
return message;
}
}
При запуске кода, когда он достигает точки останова после строки:
ждать _topicClient.SendAsync (CreateMessage (job));
Я вижу, что сообщение не добавляется в тему все время, когда я выполняю код.
DuplicateDetectionHistoryTimeWindow - 10 мин.
Когда я пытаюсь отправить сообщение через 12 минут, я вижу, что новое отправленное сообщение немедленно игнорируется и отбрасывается. Глядя на этот документ https://docs.microsoft.com/en-us/azure/service-bus-messaging/duplicate-detection, я вижу, что если какое-либо новое сообщение отправляется с MessageId, которое было зарегистрировано в течение временного окна (10 минут), сообщение отображается как принято (операция отправки завершается успешно), но новое отправленное сообщение немедленно игнорируется и отбрасывается. Однако похоже, что он игнорирует сообщение даже через 10 мин.
Я попытался обновить MessageId до PK_RK + random GUID. Я все еще вижу ту же проблему.