масстранзит интеграции с asp. net core 3.1 - PullRequest
0 голосов
/ 24 апреля 2020

Я создал новый webapi проект, использующий ядро ​​do tnet. Я работаю с 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, которую я пытался настроить шину:

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 помечен как устаревший в сборке MassTransit.AspNetCoreIntegration, версия = 6.2.5.0, следуя документу сборки, вместо этого следует использовать AddMassTransitHostedService , но я получаю сообщение об ошибке с помощью: services.AddMassTransitHostedService (), что метод не распознается.

Это проблема при работе с netcoreapp3.1 или я пропускаю некоторые packageReference?

Это Это будет установка:

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

1 Ответ

0 голосов
/ 01 мая 2020

У меня была такая же проблема. Я сделал это, чтобы решить:

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.com/alanbarros/Messtransit_RabbitMQ_Docker-Compose_DebugVsCode/blob/master/src/messages-publisher/Startup.cs

...