Masstransit Jobconsumer 更改队列名称 Job、JobAttempt 和 JobType

Masstransit Jobconsumer change queue names Job, JobAttempt and JobType

我正在使用 masstransit、rabbitmq 和 jobconsumers 构建概念验证。这非常好,我正在取得进步。但是有一件事我无法解决,那就是更改队列 Job、JobAttempt 和 JobType 的队列名称。我找不到注入端点名称格式化程序的正确位置。我们在 rabbitmq 集群上 运行 多个应用程序,不同解决方案的作业不应混合。所以我的问题是在哪里以及如何更改队列名称?

我试过:

services.AddMassTransit(mt =\>

    mt.AddDelayedMessageScheduler();

    mt.AddConsumer\<LongJobConsumer\>(cfg =\>
    {
        cfg.Options\<JobOptions\<LongJobConsumer\>\>(options =\> options
            .SetJobTimeout(TimeSpan.FromMinutes(15))
            .SetConcurrentJobLimit(1));
    });

    mt.SetEndpointNameFormatter(new DefaultEndpointNameFormatter("MyQueue", false));

    mt.UsingRabbitMq((context, cfg) =>
    {
        cfg.UseDelayedMessageScheduler();
        cfg.Host(rabbitMqConfig.Host, host =>
        {
            host.Username(rabbitMqConfig.Username);
            host.Password(rabbitMqConfig.Password);
            host.Heartbeat(rabbitMqConfig.Heartbeat);
        });

        cfg.UseGlobalRetryPolicy();
        cfg.UseInMemoryOutbox();

        ServiceInstanceOptions options = new ServiceInstanceOptions()
            .EnableJobServiceEndpoints();
        cfg.ServiceInstance(options, instance =>
        {
            instance.ConfigureJobServiceEndpoints();
            instance.ConfigureEndpoints(context, new DefaultEndpointNameFormatter("MyQueue", false));
        });

您可以在配置作业服务端点时配置端点名称:

instance.ConfigureJobServiceEndpoints(x =>
{
    x.JobServiceStateEndpointName = "job-type";
    x.JobServiceJobAttemptStateEndpointName = "job-attempt";
    x.JobServiceJobStateEndpointName = "job";
});