我有一个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;
}
}
在运行代码时,当代码到达第行后的断点时:
等待主题客户。SendAsync(CreateMessage(作业));
当我执行代码时,我看到消息并没有一直添加到主题中。
重复检测历史时间窗口为10分钟
当我在12分钟后尝试发送消息时,我看到新发送的消息立即被忽略和删除。看看这个医生
https://docs.microsoft.com/en-us/azure/service-bus-messaging/duplicate-detection
,我看到,如果使用在时间窗口(10分钟)内记录的MessageId发送任何新消息,消息将报告为已接受(发送操作成功),但新发送的消息将立即被忽略和删除。但是,即使在10分钟后,它也会忽略该消息。
我尝试将MessageId更新为“PK_RK”+随机GUID。我仍然看到同样的问题。