我们有一个.NET核心控制台应用程序,可以充当Saga/流程管理器的角色。
这个Saga应用程序通过Azure Service Bus (使用MassTransit进行消息抽象- MassTransit.Azure.ServiceBus)与其他微服务进行通信。
该应用程序包含一个状态机(MassTransit/Automatonymous),它处理由服务总线消息触发的事件。
在当前场景中,最初的Saga事件是通过MassTransit发布消息从Azure函数应用程序触发的:
busControl.Publish(createSearchPageLinkEvent);
现在,当:
( a) Sa
我和MassTransit sagas的并发性有问题。
我目前正在用这个流程开发一个POC:
一个线程生成100个事件,然后按顺序发布到MassTransit.The。当saga被实例化时,它将另一个事件发布到MassTransit.The,新事件由执行某些业务逻辑的消费者获取,并将两个由此产生的事件中的一个发布到步骤3中产生的事件。触发saga中的状态更改。
在第4步中,我有时会遇到类似于此Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException: The database operation was expected to aff
我很难让MassTransit (v7.3.1)使用运行在Docker容器中的ActiveMQ Artemis2.19.0使用已计划好的事件来工作。所有事情都可以正常工作,但是不管我指定什么延迟,事件的发布都不会延迟。
我尝试过使用测试工具复制相同的用例,但是这里所有的东西都像预期的那样工作。
更新了,我为MassTransit添加了调试日志,以便更好地了解时间线。
下面是我的测试代码,使用测试工具进行一次绿色测试,使用ActiveMQ进行一次失败的测试。
using Automatonymous;
using MassTransit;
using MassTransit.ActiveMqTr
有没有办法以通用的方式处理NotAcceptedStateMachineException,例如,在请求-响应方法中向客户端返回一些用户友好的消息?
Automatonymous.NotAcceptedStateMachineException: ExampleSagaState(8dc388ea-99b3-4d21-a3e5-915c4185ec12) Saga exception on receipt of IExampleRequest: Not accepted in state ExampleState
---> Automatonymous.UnhandledEve
我在使用MassTransit的应用程序中绑定使用RedisSagaRepository sagas。初始化看起来像
var machine = new CreditTransactionStateMachine();
var redisOptions = new ConfigurationOptions
{
EndPoints =
{
"link-to-redis:6379",
},
ClientNam
我试图使用Axon和Saga设计模式在Micorservices之间使用Java发送数据,我有两个服务,一个用于Order,另一个用于Product设计模式。我的意思是,我将数据发送到axon,然后在仪表板中看到它,然后通过查询数据获取并保存在read数据库(MySQL)中。今天,我尝试使用Saga设计模式,当我创建一个新的订单时,将ReserveProductCommand发送到axon和gets by Product,但是saga没有事件启动,我不知道为什么
在Saga类下面,按顺序服务,它应该获得OrderCreatedEvent并记录消息,但它没有
@Saga
public clas
我有一个.net核心控制台应用程序,它目前有一个IHostedService,我需要在应用程序启动时生成和管理这个服务的多个实例。
我希望实施某种协调,负责解雇,监测和重新启动工人。我知道这个概念,但我不确定如何执行。
通过实例化的ICallProgService,工作人员自己将打开一个到本体数据库的会话并对其进行维护。然后,工作人员将通过RabbitMq使用带有请求/响应模式的masstransit库侦听消息队列。
这里的微妙之处在于,我相信(不是100%确定)它们都需要连接到同一个IBusControl上,才能使用masstransit。
工人的代码在这里:
public class Me
我正在尝试创建过滤器来填充使用者中的correlationId,并在发送的消息中添加这个correlationId。
但是,我相信,由于它是多总线的上下文在2配置的总线之间是不同的,是否有任何方法使这个工作。
下面是其中一个过滤器的示例:
public class CorrelationSendFilter<T> :
IFilter<SendContext<T>>
where T : class
{
private CorrelationContext _correlationContext;
public Correlat
我有一个asp.net流程,它也使用来自服务总线(MassTransit)的消息。对于For请求,我的数据库会话将以PerWebRequest的方式进行解析。
但是,当进程使用来自MassTransit的消息时,我需要数据库会话有另一种生活方式,因为没有可用的HttpContext。
我做了这样的事情:
public class PerRequestLifeStyleManager : ILifestyleManager
{
readonly PerWebRequestLifestyleManager perWebRequestLifestyleManager;
rea
我有一个在HTTP端点接受请求的简单服务。端点的操作使用MassTransit发布事件,提醒使用者某个实体已更新。然后,已发布事件的使用者向同步使用者发送同步请求,以完成工作单元。
但是,当事件使用者试图分派请求时,MassTransit会抛出一个异常,声明为A convention for the message type {type} was not found。这似乎意味着我的消费者没有注册,但我相信它是注册的。
这是我的Startup注册码:
public void ConfigureServices(IServiceCollection services)
{
// -- r