我有一个ID用来通过REST API为工作计划提供适配器的服务。计划的作业是对各种其他服务进行HTTP调用。
我具有以下实现方式:
LOC_RANK b c d rownum flg
--------- ------ ------ ------ ------ ---
1 (null) (null) (null) 1 E
1 a b c 2 N
2 a b c 3 E
3 (null) (null) (null) 4 N
4 (null) (null) (null) 5 E
4 (null) (null) (null) 6 N
5 a b c 7 E
6 a1 b1 c1 8 N
7 a a c 9 E
7 a a c 10 N
但是,我发现ScheduleRecurringSend方法不能始终如一地将作业持久保存到Db。这是断断续续的。我尝试过更改ScheduleId和Group,但这会产生间歇性的结果。我在跳过的队列中收到很多消息。
我在Azure Service Fabric中使用了该服务的改进版本,以确保只有一个服务知道Quartz DB的位置。
https://github.com/MassTransit/MassTransit-Quartz
这种方法错误吗?
谢谢
答案 0 :(得分:1)
您使用不正确。
首先,您需要configure总线,以便它使用正确的调度程序地址:
var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
var host = cfg.Host(new Uri("rabbitmq://localhost/"), h =>
{
h.Username("guest");
h.Password("guest");
});
cfg.UseMessageScheduler(
new Uri($"{_massTransitSettings.Protocol}://{_massTransitSettings.RabbitMqHost}/scheduler"));
});
然后,您需要正确使用ScheduleRecurringSend。第一个参数不是调度程序Uri,而是将获取调度消息的服务端点的Uri。必须在总线配置中指定调度程序Uri。