我已经创建了新的 webapi 我正在使用ubuntu 19.10使用.net core进行项目。3.1 版本。
这是我的proj文件。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MassTransit.AspNetCore" Version="6.2.5" />
<PackageReference Include="MassTransit.Extensions.DependencyInjection" Version="6.2.5" />
<PackageReference Include="MassTransit.RabbitMQ" Version="6.2.5" />
</ItemGroup>
</Project>
使用Masstransit文档,我试图配置总线,但我收到错误信息:AddBus函数未被识别,AddMassTransit在Assembly MassTransit.AspNetCoreIntegration中被标记为过时。
using MassTransit.AspNetCoreIntegration;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using MassTransit.ExtensionsDependencyInjectionIntegration;
using Microsoft.Extensions.DependencyInjection;
namespace abc.api.com
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddHealthChecks();
services.AddMvc();
services.AddMassTransit(x =>
{
x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
{
// configure health checks for this bus instance
cfg.UseHealthCheck(provider);
cfg.Host("rabbitmq://localhost");
cfg.ReceiveEndpoint("submit-order", ep =>
{
ep.PrefetchCount = 16;
ep.UseMessageRetry(r => r.Interval(2, 100));
ep.ConfigureConsumer<OrderConsumer>(provider);
});
}));
});
services.AddMassTransitHostedService();
}
但我得到的错误是AddBus函数未被识别,并且AddMassTransit在Assembly MassTransit.AspNetCoreIntegration, Version=6.2.5.0中被标记为过时,按照汇编文档,我们应该使用AddMassTransitHostedService来代替,但我在使用:services.AddMassTransitHostedService()时得到一个错误,即该方法未被识别。
这是在netcoreapp3.1下工作时的问题,还是我漏掉了一些包的引用?
这是安装时的问题。
apt-get install dotnet-sdk-3.1
apt-get install aspnetcore-runtime-3.1
apt-get install dotnet-runtime-3.1
dotnet add package MassTransit.AspNetCore --version 6.2.4
dotnet add package MassTransit.RabbitMQ --version 6.2.4
dotnet add package MassTransit.Extensions.DependencyInjection --version 6.2.4
我遇到了同样的问题。我做了它来解决。
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddHealthChecks();
var bus = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
var host = cfg.Host(new Uri("rabbitmq://rabbitmq-service/"), h => { });
});
services.AddSingleton<IPublishEndpoint>(bus);
services.AddSingleton<ISendEndpointProvider>(bus);
services.AddSingleton<IBus>(bus);
services.AddSingleton<IBusControl>(bus);
如果你想看更多,请访问我的github。https:/github.comalanbarrosMesstransit_RabbitMQ_Docker-Compose_DebugVsCodeblobmastersrcmessages-publisherStartup.cs。