我正在将一个. NET 3. 1应用程序直接升级到. NET 6。它使用Azure服务总线和一个函数应用程序来处理命令并将它们传递给正确的消费者(CQRS模式)。
我使用Bus.Factory.CreateBrokeredMessageReceiver(在. NET 3.1中)来形成处理程序,但是自从升级到. NET 6(并将所有MassTransit包更新到v7)之后,这个功能就被删除了。还有什么替代方法呢?我有许多使用者,而单一使用者解决方案没有帮助。
[FunctionName("MessageHandler")]
public async Task Run(
[ServiceBusTrigger("%ServiceBusQueue%", Connection = "ServiceBusConnection")]
ServiceBusReceivedMessage message,
CancellationToken cancellationToken)
{
...
var handler = Bus.Factory.CreateBrokeredMessageReceiver(
binder,
cfg =>
{
cfg.CancellationToken = cancellationToken;
cfg.SetLog(logger);
cfg.InputAddress = new Uri(_settings.ServiceBusUrl);
cfg.UseRetry(x => x.Intervals(2000, 4000, 8000, 16000));
cfg.Consumer(GetConsumerType(messageType), type => _serviceProvider.GetService(type));
});
await handler.Handle(message);
...
}
private Type GetConsumerType(string messageType)
{
...
return consumerType;
}
我已经升级了所有相关的软件包,并使用以下功能应用程序:
- MassTransit.Azure.ServiceBus.Core
- MassTransit.Extensions.DependencyInjection
- MassTransit.WebJobs.ServiceBus
我也在网上关注了一些替代方案(Eidogg.那些来自Chris Patterson Re. ImessageReceiver的方案),但都无济于事。
1条答案
按热度按时间zf9nrax11#
我建议查看Azure功能sample,以了解如何在Azure服务总线上使用最新版本的MassTransit。