masstransit与asp.net core 3.1的整合

问题描述 投票:0回答:1

我已经创建了新的 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
asp.net-core masstransit
1个回答
0
投票

我遇到了同样的问题。我做了它来解决。

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。

© www.soinside.com 2019 - 2024. All rights reserved.