如何解决Masstransit,未创建传奇资源
我有两个服务,一个充当消费者,另一个充当生产者。以下是我对每一个的配置。
生产者配置
services
.AddSingleton(KebabCaseEndpointNameFormatter.Instance);
services
.AddMassTransit(config =>
{
config.AddBus(serviceProvider =>
Bus.Factory.CreateUsingRabbitMq(config =>
{
config.Host(new Uri("amqp://admin:pass@localhost"));
}));
})
.AddMassTransitHostedService();
消费者配置
services
.AddSingleton(KebabCaseEndpointNameFormatter.Instance);
services
.AddMassTransit(config =>
{
config.AddSagaStateMachine<OrderStateMachine,OrderState>()
.RedisRepository();
config.AddBus(serviceProvider =>
Bus.Factory.CreateUsingRabbitMq(config =>
{
config.Host(new Uri("amqp://admin:pass@localhost"));
config.ReceiveEndpoint("service-5-queue",endpointConfig =>
{
endpointConfig.Consumer<SubmitOrderCommand>();
});
}));
})
.AddMassTransitHostedService();
按照一些在线教程,当应用程序启动时,我应该会看到一些队列和交换正在创建,其中之一应该是一些“订单状态”交换和队列。不幸的是,情况并非如此。
任何使用大众运输的人都知道为什么会这样?
日志
[15:56:15 DBG] Declare queue: name: service-5-queue,durable,consumer-count: 0 message-count: 0
[15:56:15 DBG] Declare exchange: name: service-5-queue,type: fanout,durable
[15:56:15 DBG] Declare exchange: name: Messages:ISubmitOrder,durable
[15:56:15 DBG] Bind queue: source: service-5-queue,destination: service-5-queue
[15:56:15 DBG] Bind exchange: source: Messages:ISubmitOrder,destination: service-5-queue
[15:56:15 DBG] Consumer Ok: rabbitmq://localhost/service-5-queue - amq.ctag-X4WuaeOFDCCMcdEXd4EtuA
[15:56:15 DBG] Endpoint Ready: rabbitmq://localhost/service-5-queue
[15:56:15 INF] Bus started: rabbitmq://localhost/
发送一些消息会触发 consumer
,但 saga 不会在任何时候触发,也不会在某些初始化步骤或其他过程中被调用。
[16:00:08 DBG] Declare exchange: name: Messages:IOrderSubmitted,durable [16:00:08 DBG] SEND rabbitmq://localhost/Messages:IOrderSubmitted 0cb00000-2327-309c-67c9-08d8ef964ca6 Messages.IOrderSubmitted
[16:00:09 DBG] Create send transport: rabbitmq://localhost/DESKTOPNH4IRSD_Service1_bus_b1ayyybdrhajaxmebdcq9fqbrz?temporary=true
[16:00:09 DBG] Declare exchange: name: DESKTOPNH4IRSD_Service1_bus_b1ayyybdrhajaxmebdcq9fqbrz,auto-delete
[16:00:09 DBG] SEND rabbitmq://localhost/DESKTOPNH4IRSD_Service1_bus_b1ayyybdrhajaxmebdcq9fqbrz?temporary=true 0cb00000-2327-309c-b0bc-08d8ef964d91 Messages.IOrderPreSubmissionOk [16:00:10 DBG] RECEIVE rabbitmq://localhost/service-5-queue 0cb00000-2327-309c-4f1f-08d8ef9647eb Messages.ISubmitOrder Service5.Handlers.SubmitOrderCommand(00:00:09.6961272)
解决方法
您应该删除显式接收端点配置,并调用 ConfigureEndpoints
。这将为传奇创建端点。
services
.AddMassTransit(config =>
{
config.AddSagaStateMachine<OrderStateMachine,OrderState>()
.RedisRepository();
config.UsingRabbitMq((context,cfg) =>
{
cfg.Host(new Uri("amqp://admin:pass@localhost"));
cfg.ConfigureEndpoints(context);
});
})
.AddMassTransitHostedService();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。