@rick I have the same problem, Could you please elaborate more on how to fix it? This is my configuration and how to use them.
"EventSettings": {
"Events": {
"TenantEvents": {
"ConnectionString": "Endpoint=sb://<servicebusname>.servicebus.windows.net/;SharedAccessKeyName=SendPolicy;SharedAccessKey=<key>",
"TopicName": "tenantevents"
},
"AcknowledgmentEvents": {
"ConnectionString": "Endpoint=sb://<servicebusname>.servicebus.windows.net/;SharedAccessKeyName=send-and-recieve;SharedAccessKey=<key>",
"TopicName": "acknowledgmentevents"
}
}
}
This is how I access the consumer:
public async Task StartAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Starting EventAcknowledgmentConsumer...");
var eventConfig = _eventSettings.Events["AcknowledgmentEvents"];
_client = new ServiceBusClient(eventConfig.ConnectionString);
_receiver = _client.CreateReceiver(eventConfig.TopicName);
_logger.LogInformation("EventAcknowledgmentConsumer configured with Topic: {TopicName}", eventConfig.TopicName);
// Start receiving messages
await ReceiveMessagesAsync(cancellationToken);
_logger.LogInformation("EventAcknowledgmentConsumer started.");
}
This is how I published the event (publishing events are working fine):
app.MapPost("/events/publish", async (IEventPublisher eventPublisher, EventDto eventDto) =>
{
var eventAcknowledgment = new EventAcknowledgment(eventDto.EventId, eventDto.ConsumerId, Enum.Parse<EventAcknowledgment.AcknowledgmentStatus>(eventDto.Status))
{
Timestamp = eventDto.Timestamp
};
await eventPublisher.PublishAsync(eventAcknowledgment);
return Results.Ok(new { Message = "Event published successfully", EventId = eventAcknowledgment.EventId });
});
public async Task PublishAsync<TEvent>(TEvent @event)
{
var eventConfig = GetEventConfig(@event);
await using var client = new ServiceBusClient(eventConfig.ConnectionString);
var sender = client.CreateSender(eventConfig.TopicName);
var message = new ServiceBusMessage(JsonSerializer.Serialize(@event))
{
ContentType = "application/json",
SessionId = Guid.NewGuid().ToString() // Set a unique SessionId
};
await sender.SendMessageAsync(message);
}
private EventConfig GetEventConfig<TEvent>(TEvent @event)
{
return @event switch
{
TenantCreatedEvent => _eventSettings.Events["TenantEvents"],
TenantUpdatedEvent => _eventSettings.Events["TenantEvents"],
TenantDeletedEvent => _eventSettings.Events["TenantEvents"],
EventAcknowledgment => _eventSettings.Events["AcknowledgmentEvents"],
// Add other event types and their corresponding configurations here
_ => throw new ArgumentOutOfRangeException(nameof(@event), @event, null)
};
}
}
When a consumer registers, I can see these logs, but when trying to consume the messages, it is saying cannot find the topic.
2025-03-03 06:34:54 Azure.Messaging.ServiceBus.ServiceBusException: The messaging entity '<servicebusname>:topic:acknowledgmentevents~15|amqps://<servicebusname>.servicebus.windows.net/-a46a10d0;0:5:6:source(address:/acknowledgmentevents,filter:[])' could not be found. To know more visit https://aka.ms/sbResourceMgrExceptions. TrackingId:bcdbc70c-95ea-47b7-aabd-e6aa3db58423_B6, SystemTracker:gi::G7:Recv:1646104:638765501148700000:<servicebusname>:topic:acknowledgmentevents~15:F0:C11, bi::in-connection2278(G7-1156480)::session2286::link10087117, Timestamp:2025-03-03T05:34:54 TrackingId:fb67cf36800149079d2f511a4d83f734_G7, SystemTracker:gateway10, Timestamp:2025-03-03T05:34:54 (MessagingEntityNotFound). For troubleshooting information, see https://aka.ms/azsdk/net/servicebus/exceptions/troubleshoot.
2025-03-03 06:34:54 at Azure.Messaging.ServiceBus.Amqp.AmqpReceiver.ReceiveMessagesAsyncInternal(Int32 maxMessages, Nullable`1 maxWaitTime, TimeSpan timeout, CancellationToken cancellationToken)
2025-03-03 06:34:54 at Azure.Messaging.ServiceBus.Amqp.AmqpReceiver.<>c.<<ReceiveMessagesAsync>b__44_0>d.MoveNext()