MassTransit JobConsumer никогда не ударилC#

Место общения программистов C#
Ответить
Anonymous
 MassTransit JobConsumer никогда не ударил

Сообщение Anonymous »

У меня есть основное решение ASP.NET, которое содержит 2 службы (каждая из которых использует MassTransit) и общий проект, который имеет часть конфигурации для обеих служб. < /p>
Общий проект содержит следующее: < /p>

Код: Выделить всё

public static IServiceCollection AddMassTransitWithRabbitMq(
this IServiceCollection services,
BrokerSettings appSettings,
Action configureEndpoints,
Action? configureJobConsumers = null)
{
services.AddMassTransit(cfg =>
{
var entryAssembly = Assembly.GetEntryAssembly();
cfg.AddConsumers(entryAssembly);

cfg.AddDelayedMessageScheduler();
cfg.SetKebabCaseEndpointNameFormatter();

cfg.SetInMemorySagaRepositoryProvider();
cfg.AddJobSagaStateMachines();

configureJobConsumers?.Invoke(cfg);

cfg.UsingRabbitMq((context, rabbitCfg) =>
{
rabbitCfg.UseDelayedMessageScheduler();

rabbitCfg.PrefetchCount = 10;
rabbitCfg.Exclusive = false;
rabbitCfg.Durable = true;

rabbitCfg.Host(appSettings.HostName, "/", h =>
{
h.Username(appSettings.UserName);
h.Password(appSettings.Password);
h.Heartbeat(600);
});

rabbitCfg.ConfigureEndpoints(context);
});
});
return services;
}
< /code>
В моей службе я называю метод таким: < /p>
services.AddMassTransitWithRabbitMq(appSettings.BrokerSettings, (msContext, cfg) =>
{
cfg.ReceiveEndpoint(QueueNames.GetPropertiesExternal, e =>
{
e.ConfigureConsumer
(msContext);
e.ConnectReceiveEndpointObserver(new GlobalExceptionObserver());
});
},
reg =>
{
reg.AddConsumer(c =>
{
c.Options(o => o
.SetJobTimeout(TimeSpan.FromHours(5))
.SetConcurrentJobLimit(5)) // one long job at a time per instance
.SetRetry(r => r.Interval(3, TimeSpan.FromMinutes(1)));
});
});
< /code>
Мой потребительский класс: < /p>
public class PropertiesAndDefinitionsConsumer(ILogger logger) : IJobConsumer
{
public async Task Run(JobContext context)
{
// Do something.
}
}
< /code>
При вызове я получаю сообщение в своей очереди, но потребитель никогда не попадает. < /p>
return await _publishProvider.SubmitJob(message, cancellationToken);
Это запись в моем менеджере Rabbitmq:


Подробнее здесь: https://stackoverflow.com/questions/797 ... -never-hit
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»