向服务总线主题发送消息
send message to service bus topic
我有一个 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,我发现如果在时间 window(10 分钟)期间使用记录的 MessageId 发送任何新消息,则该消息被报告为已接受(发送操作成功),但新发送的消息立即被忽略并丢弃。但是,它似乎在 10 分钟后仍忽略了该消息。
我尝试将 MessageId 更新为“PK_RK”+ 随机 GUID。我仍然看到同样的问题。
问题不太可能与发送代码有关。
How do I update the below code to check if message is added to the topic or not.
你不知道。当一条消息被成功派发时,就意味着代理已经收到了它,并且它保证在服务器上。您应该做的是验证消息未被丢弃或处理 w/o 注意到。验证这一点的最简单方法是在收集所有消息的主题下创建一个“包罗万象的订阅”,并检查您的消息是否已发送。我不建议在您的 development/testing 环境之外这样做,因为这不是您应该在生产环境中做的事情。
我有一个 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,我发现如果在时间 window(10 分钟)期间使用记录的 MessageId 发送任何新消息,则该消息被报告为已接受(发送操作成功),但新发送的消息立即被忽略并丢弃。但是,它似乎在 10 分钟后仍忽略了该消息。
我尝试将 MessageId 更新为“PK_RK”+ 随机 GUID。我仍然看到同样的问题。
问题不太可能与发送代码有关。
How do I update the below code to check if message is added to the topic or not.
你不知道。当一条消息被成功派发时,就意味着代理已经收到了它,并且它保证在服务器上。您应该做的是验证消息未被丢弃或处理 w/o 注意到。验证这一点的最简单方法是在收集所有消息的主题下创建一个“包罗万象的订阅”,并检查您的消息是否已发送。我不建议在您的 development/testing 环境之外这样做,因为这不是您应该在生产环境中做的事情。