WolverineFx Проблема с обычной маршрутизацией сообщенийC#

Место общения программистов C#
Ответить
Anonymous
 WolverineFx Проблема с обычной маршрутизацией сообщений

Сообщение Anonymous »

Я новичок в очередях сообщений, поэтому для своей текущей задачи я выбираю фреймворк WolverineFX.
Итак, задача: у меня есть один сервис, который производит заказы (простая стратегия алгоритмической торговли, основанная на конечном автомате) и отправляет их в RabbitMQ. Еще 2 микросервиса должны получать сообщения и записывать данные в консоль или телеграмму. Ничего серьезного.
Итак, как я уже говорил, я стараюсь использовать для этого WolverineFX+RabbitMQ. RabbitMQ был арендован на Cloudampq (бесплатная версия).
Вот конфигурация моего слушателя:

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

            builder.UseWolverine(opts =>
{
opts.ApplicationAssembly = typeof(Program).Assembly;

opts.UseRabbitMq(messageBusConfiguration!.ConnectionString)
.EnableWolverineControlQueues()
.DisableDeadLetterQueueing()

.UseConventionalRouting(config =>
{
string projectName = Assembly.GetEntryAssembly().GetName().Name;
config.QueueNameForListener(type => $@"{type.FullName}_{projectName}").ConfigureListeners((cfg, ctx) =>
{
cfg.BindToExchange(ExchangeType.Topic, "LoggerExchange", $@"{ctx.MessageType.FullNameInCode()}");
});
})
.ConfigureListeners(c => c.ConfigureQueue(t => { t.AutoDelete = true; t.IsDurable = false; }))
.AutoProvision();

opts.UseSystemTextJsonForSerialization();

opts.UnknownMessageBehavior = UnknownMessageBehavior.LogOnly;
opts.DefaultExecutionTimeout = TimeSpan.FromMinutes(5);
opts.DefaultRemoteInvocationTimeout = TimeSpan.FromMinutes(5);

opts.Policies.UseDurableInboxOnAllListeners();
opts.Policies.UseDurableOutboxOnAllSendingEndpoints();

opts.Services.AddResourceSetupOnStartup();
});
Фиктивный обработчик:

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

    [WolverineHandler]
public sealed class OrderLoggingHandler
{
public async Task HandleAsync(Order message)
{
Console.WriteLine("Order came");
}
}
а это конфигурация издателя:

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

            builder.UseWolverine(opts =>
{
opts.ApplicationAssembly = typeof(Program).Assembly;                opts.UseRabbitMq(messageBusConfiguration!.ConnectionString)
.AutoProvision()
.DisableDeadLetterQueueing()
.UseConventionalRouting(config =>
{
config.ExchangeNameForSending(type => "LoggerExchange")
.ConfigureSending((cfg, ctx) => cfg.ExchangeType(ExchangeType.Topic));
});
//.BindExchange("LoggerExchange", c => c.ExchangeType = ExchangeType.Topic);

opts.UseSystemTextJsonForSerialization();

opts.DefaultExecutionTimeout = TimeSpan.FromMinutes(5);
opts.DefaultRemoteInvocationTimeout = TimeSpan.FromMinutes(5);

opts.Services.AddResourceSetupOnStartup();
});
Но слушатели не реагируют на опубликованное сообщение через bus.Publish(...).
Это обмен, созданный как обмен темами
Изображение

Все привязки верны
Это генерируется автоматически очередь.
Изображение

Но не могу получить ни одного сообщения. В чем причина, может кто знает. Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/798 ... er-problem
Ответить

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

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

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

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

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