我最近在ASP.NET Core 5.0中嘗試服務總線佇列,我在其中創建了生產者webapi和消費者web API,并使用masstransite。但由于某些原因,我無法消費訊息。
訊息生產者代碼控制器:
[HttpGet] [Route("sender")
[Route("sender")]
public async Task SendUsingAzureServiceBusQeue()
{
嘗試
{
var sendEndpoint =
await _serviceEndPointProvider.GetSendEndpoint(
new Uri("myservicebusurl/test"))。
await sendEndpoint.Send<Test>(new Test { message = "Hi This message from sender" });
}
catch(Exception ex)
{
}
}
生產者啟動類設定:
public void ConfigureServices(IServiceCollection services)
{
services.AddMassTransit(x =>
{
x.UsingAzureServiceBus((context, cfg) =>
{
cfg.Host("Endpoint=myservicebusconnectionstring")。
});
});
services.AddMassTransitHostedService();
services.AddControllers();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "AKS Example", Version = "v1" });
});
}
消費者代碼啟動類:
public void ConfigureServices(IServiceCollection services)
{
services.AddMassTransit(x =>
{
x.UsingAzureServiceBus((context, cfg) =>
{
cfg.Host("Endpoint=myservicebusconnectionstring")。
cfg.ReceiveEndpoint("test", endpoint =>
{
endpoint.ConfigureConsumer<MessageConsumer>(context)。
});
});
x.AddConsumer<MessageConsumer>()。
});
services.AddMassTransitHostedService(true);
services.AddControllers();
}
消費者代碼消費者類:
public class MessageConsumer : IConsumer<Test>
{
public Task Consume(ConsumeContext<Test> context)
{
Console.WriteLine($"Message processed: Message:{context.Message.message}")。
回傳Task.CompletedTask。
}
}
我能夠看到訊息正在被推送,但在消費者端沒有收到。 我還注意到,盡管我在發布和訂閱時只使用了佇列名稱 "test",但還是有一個Topic被創建了。
uj5u.com熱心網友回復:
確保兩個專案有相同的訊息型別,包括命名空間如檔案中指出的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/328652.html
標籤:
