gpt4 book ai didi

redis - 使用 redis 集成的公共(public)交通传奇导致异常

转载 作者:可可西里 更新时间:2023-11-01 11:24:54 24 4
gpt4 key购买 nike

我打算使用 RedisSagaRepository 在我的应用程序中使用 MassTransit sagas。初始化看起来像

        var machine = new CreditTransactionStateMachine();
var redisOptions = new ConfigurationOptions
{
EndPoints =
{
"link-to-redis:6379",
},
ClientName = "login",
Password = "pass",

};

var redis = ConnectionMultiplexer.Connect(redisOptions);
var repo = new Lazy<ISagaRepository<CreditTransactionSaga>>(
() => new RedisSagaRepository<CreditTransactionSaga>(() => redis.GetDatabase()));

var busControl = Bus.Factory.CreateUsingRabbitMq(x =>
{
IRabbitMqHost host = x.Host(new Uri("rabbitmq://link-to-rabbit"), h =>
{
h.Username("guest");
h.Password("guest");
});

x.ReceiveEndpoint(host, "queueName", e =>
{
e.PrefetchCount = 8;
e.StateMachineSaga(machine, repo.Value);
});
});

busControl.Start();
Console.Out.WriteLine("Bus started.");

因此,当我在队列中收到消息时,状态机开始处理它,但随后出现 NotImplementedByDesignException

完整的堆栈跟踪是

Redis saga repository does not support queriesMassTransit.NotImplementedByDesignException: Redis saga repository does not support queries в MassTransit.RedisIntegration.RedisSagaRepository1.SendQuery[T](SagaQueryConsumeContext2 context, ISagaPolicy2 policy, IPipe1 next) в MassTransit.Saga.Pipeline.Filters.QuerySagaFilter`2.>-Send>d__6.MoveNext()---

看起来 RedisSagaRepository 不应该使用 SendQuery 方法,但在 QuerySagaFilter 中它显式调用,我看不到解决这个问题的方法。

是否有任何 RedisSagaRepository 初始化的工作示例或如何在不调用 SendQuery 的情况下使用它的建议?

最佳答案

我发现避免 RedisSagaRepository.SendQuery 方法的唯一方法是在配置状态机事件时使用 EventCorrelationConfigurator.CorrelateById 方法而不是 EventCorrelationConfigurator.CorrelateBy

所以它应该在你的所有模型中都有一个相关的 Guid,由状态机使用。希望对大家有帮助。

关于redis - 使用 redis 集成的公共(public)交通传奇导致异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48396886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com