我有一个 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;
}
}
在运行代码时,当它在行后遇到断点时:
await _topicClient.SendAsync(CreateMessage(job));
当我执行代码时,我看到消息并未一直添加到主题中。
DuplicateDetectionHistoryTimeWindow 为 10 分钟
当我尝试在 10 分钟内发送消息时,我看到新发送的消息立即被忽略并丢弃。查看此文档 https://docs.microsoft.com/en-us/azure/service-bus-messaging/duplicate-detection,我看到如果使用在时间窗口(10 分钟)内记录的 MessageId 发送任何新消息,该消息将报告为已接受(发送操作成功),但新发送的消息立即被忽略并丢弃。因此,我尝试将 MessageId 更新为“PK_RK”+ 随机 GUID。我仍然看到同样的问题。我错过了什么?
答案 0 :(得分:0)
官方服务总线 SDK 未重现该问题。该场景按预期工作。如果有人遇到此问题,请标记我,以便我查看源代码、配置以及后端是否存在任何问题。
类似帖子: https://github.com/MicrosoftDocs/azure-docs/issues/71585 https://docs.microsoft.com/en-us/answers/questions/301303/index.html