【发布时间】:2018-01-24 14:31:12
【问题描述】:
我正在使用 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 仓库不支持 queryMassTransit.NotImplementedByDesignException: Redis 传奇 存储库不支持查询 в MassTransit.RedisIntegration.RedisSagaRepository
1.SendQuery[T](SagaQueryConsumeContext2 上下文,ISagaPolicy2 policy, IPipe1 下一个)в MassTransit.Saga.Pipeline.Filters.QuerySagaFilter`2.>-Send>d__6.MoveNext()---
看起来 RedisSagaRepository 不应该使用 SendQuery 方法,但在 QuerySagaFilter 中它显式调用,我看不到解决此问题的方法。
是否有任何初始化 RedisSagaRepository 的工作示例或建议如何在不调用 SendQuery 的情况下使用它?
【问题讨论】:
标签: redis masstransit