masstransit 相关问题

MassTransit是一个免费的,开源的,轻量级的Microsoft .NET框架服务总线。

为什么抛出异常:AddMassTransit() 已被调用,并且每个容器只能调用一次?

我正在我的ConfigureServices 中添加Azure 服务总线的公共交通配置。我正在使用 .Net6 和大众运输 8.0.15。我正在调试我的项目,检查我是否获得了正确的连接...

回答 1 投票 0

关于RabbitMQ批量发布和排序消息的问题

我有一个需要发送到rabbitMq的消息列表。我正在使用公共交通,我会像这样一一发布消息; foreach(事件中的 var @event) { 等待 _bus.Publish(@event, ....); } ...

回答 1 投票 0

MassTransit JobConsumer 并发不起作用

我正在尝试配置 JobConsumer 来运行长时间运行的任务。无论 SetConcurrentJobLimit 参数如何,任务都会按顺序运行,一次仅运行 1 个。 大众交通设置 服务。

回答 1 投票 0

公共交通状态机故障处理程序未触发

我正在与 MassTransit 合作,并且正在配置我的状态机。当活动中发生异常时,Saga 管道似乎不会触发故障处理程序。 为了测试这一点并确保

回答 1 投票 0

如何配置 MassTransit 和 RabbitMQ 以实现多租户

我需要将我们的多租户应用程序(使用 finbuckle)连接到 MassTransit/RabbitMQ。 该应用程序正在使用: 用于多租户支持的 Finbuckle Autofac 与 .NET Core DI 结合 要求: 目前,...

回答 1 投票 0

使 MassTransit 适应现有的 Azure ServiceBus 拓扑

目前我正在研究是否以及如何使用 MassTransit 来取代 NServiceBus。除了看起来可行的线路兼容性(消息和标头的序列化)之外,我

回答 1 投票 0

大众交通心跳和会话超时如何工作?

我们有一个应用程序,每天在 5 分钟内一次在单个主题中的每个分区(总分区为 10)接收大约 60k 条消息。对于公共交通消费者,我们使用默认值

回答 1 投票 0

publishEndpoint.Publish() 未在 MassTransit 中使用 Kafka 发送消息

我面临一个问题, Producer.Produce() 工作并成功将消息发送到 Kafka,但publishEndpoint.Publish() 似乎没有生成任何消息。我正在使用 MassTransit 和 Kafka,...

回答 1 投票 0

状态机成功处理响应后收到 MassTransit 请求超时事件

我有一个状态机,在收到初始事件后,它将发出请求,应该等待响应并转换到最终状态。它按预期工作,但它会

回答 1 投票 0

运行 docker 时 RabbitMQ/MassTransit 连接被拒绝

我正在尝试使用 MassTransit 运行 .NET 8 Web 应用程序来连接到 RabbitMQ。 在开发过程中,我只是运行我的 docker-compose 文件并手动运行 .NET 应用程序,这仅适用于...

回答 1 投票 0

如何忽略大众交通发布中的命名空间

我使用 RabbitMQ 和 Masstransit 进行消息传递。我在 ASP.NET Core 中有 2 个应用程序。其中之一是ConsumerApp,另一个是ProducerApp。他们没有共享的模型项目,每个项目都有自己的......

回答 2 投票 0

MassTransit 主机配置(需要 3 个参数的“Host”方法没有重载)

我试图设置主机配置,让我的 Dockerized 微服务知道 RabbitMq 在哪里运行。但是当我尝试指定主机名、虚拟主机和(用户名和密码)时,如所写...

回答 1 投票 0

处理大众交通/Azure 服务总线中跳过的(死信消息)

我们想要保护的场景是部署多个服务(微服务应用程序)并且新消息(MessageA)是发布的一部分。发布 MessageA 的服务是

回答 1 投票 0

MassTransit SQL Server 传输和 EntityFramework 发件箱

注意:这是最新的8.3.0版本 我正在尝试将总线发件箱与新的 SQL Server 传输一起使用,但似乎遇到了消息立即发布到 SQL 的问题

回答 1 投票 0

如何将 Redis 注册为 MassTransit 的持久层(使用请求的状态机)

我正在尝试通过使用Redis作为持久层来使用状态机。我知道 Redis saga 存储库不支持查询,但我需要在状态机内有请求。怎么...

回答 1 投票 0

使用 Azure 服务总线 V7 的 MassTransit:缺少属性 TokenProvider

我将 MassTransit 升级到 V7,与 Azure 服务总线的连接似乎发生了重大变化。以前,创建 IBusControl 的代码如下所示: 巴士.工厂.

回答 2 投票 0

成功发起请求后无法获得 MassTransit 响应

我正在使用 MassTransit 和 Amazon MQ 实施请求/响应。 (.NET 6 WebApi) 主机配置如下: 服务 .AddMassTransit(x => { x.添加消费者 我正在使用 MassTransit 和 Amazon MQ 实施请求/响应。 (.NET 6 WebApi) 主机配置如下: services .AddMassTransit(x => { x.AddConsumer<ConfigurationConsumer>(); x.UsingRabbitMq((context, cfg) => { cfg.Host(new Uri($"amqps://{rabbitMqSettings.Host}:{rabbitMqSettings.Port}/{Uri.EscapeDataString("/vhostname")}"), h => { h.Username(rabbitMqSettings.Username); h.Password(rabbitMqSettings.Password); }); cfg.ConfigureEndpoints(context); }); x.AddRequestClient<IConfigurationCommand>(); }) .AddMassTransitHostedService(); 客户端使用相同的配置,无需 x.AddConsumer() 和 cfg.ConfigureEndpoints(context)。 问题是:在客户端调用 GetResponse 将成功执行主机上的消费者,该消费者似乎按预期响应,但客户端永远不会得到结果并超时。 另一方面,当我在同一主机上使用 Web api 控制器来启动 GetResponse 时,一切都按预期工作。 确保主机和客户端应用程序之间的消息类型相同。 另外,请确保使用托管服务或其他方式在客户端上启动总线。 在我的响应类型上使用继承类时,我遇到了同样的超时问题,其中父类有一个失败响应的方法! 最后,当将响应强制转换为子类时,问题得到了解决。 MyCommon-lib: public partial interface IEvent { bool Succeeded { get; } string Message { get; } } public abstract record Event<TModel> : IEvent where TModel : IEvent { public bool Succeeded { get; set; } = true; public string Message { get; set; } = string.Empty; public TModel Failed(Exception exception) { Succeeded = false; Message = exception.InnerException?.Message ?? exception.Message; return (TModel)(object)this; //! problem was here, where I cannot return this as simple as 'return this;' } public TModel Failed(string message) { Succeeded = false; Message = message; return (TModel)(object)this; } } public partial interface IEvent { public record PointHistory(IList<PointHistoryDto>? Group, IEnumerable<PointHistoryDto>? Filtered) : Event<PointHistory>, IEvent; public record PointApplied() : Event<PointApplied>, IEvent; } 微服务1::MyMediator: public async Task DoSomething() { ... var pointHistory = await bus.Request<ICommand.PointHistory, IEvent.PointHistory>( ... ); if (!pointHistory.Message.Succeeded) throw new UserException(pointHistory.Message.Message); ... var pointApplied = await bus.Request<ICommand.PointApply, IEvent.PointApplied>( ... ); if (!pointHistory.Message.Succeeded) throw new UserException(pointHistory.Message.Message); ... } 微服务2::我的消费者1: internal class MyConsumer1( IPointService service ) : IConsumer<ICommand.PointApply> { public async Task Consume(ConsumeContext<ICommand.PointApply> context) { try { ICommand.PointApply request = context.Message; ... //! response await context.RespondAsync(new IEvent.PointApplied()); } catch (UserException err) { await context.RespondAsync(new IEvent.PointApplied().Failed(err)); } } }

回答 2 投票 0

StartJobAttempt<StartJobAttempt>(事件)执行失败

我在 .NET 8 上使用 MassTransit 8.25.0。 我有一个带有调度程序和作业使用者的 Windows 服务。无法弄清楚如何对作业进行排队,示例中的 IPublishEndpoint 是一个范围服务,所以我可以...

回答 1 投票 0

MassTransit 中的自定义消息消费

我有一个要求,我有两个具有相同代码库的 ASP.NET Core 应用程序(A 和 B)。每个应用程序都会发布一些它使用和处理的命令。 现在,当应用程序 A

回答 1 投票 0

如何有条件地创建 MassTransit 传奇?

我有一个传奇,每当两个事件之一发生时就应该触发。但是,如果数据库中的条件未满足,则不应创建传奇。 我已经尝试过类似的事情,但它......

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.