结算服务与订单服务FANOUT的疑惑

来源:3-16 四个微服务联调

SereneShawn

2021-01-16

我看老师您写的结算微服务声明的交换机是:

 channel.exchangeDeclare(
                    "exchange.settlement.order",
                    BuiltinExchangeType.FANOUT,
                    true,
                    false,
                    null
            );

而订单微服务声明的交换机是:

channel.exchangeDeclare(
                    "exchange.order.settlement",
                    BuiltinExchangeType.FANOUT,
                    true,
                    false,
                    null
            );

我自己的理解是:结算微服务应该是声明的应该是自己接收的信息,方向应该是订单—>结算,所以我觉得应该是exchange.order.settlement,而不是exchange.settlement.order。同理,订单微服务针对结算接收的消息应该是结算—>订单,所以应该是exchange.settlement.order,而不是exchange.order.settlement。

发送消息的时候,结算微服务发送的交换机才是exchange.settlement.order,因为这个时候的方向是结算—>订单;而订单微服务发送的交换机是exchange.order.settlement,这个时候的方向是订单—>结算。

希望老师能指点一下疑惑。

写回答

1回答

Moody

2021-01-17

你说的这个命名方法确实更合理些??

0
2
Moody
回复
八卦一百二十八掌
一般来说,微服务声明要发送的交换机是更合理的,因为要保证发送时,交换机存在,否则就会发送失败。 严格来说,不存在“接收用的交换机”这个说法,接受消息是从队列接收的,不用关心这个消息是从哪个交换机路由过来的。
2021-08-28
共2条回复

RabbitMQ精讲,提升工程实践能力,培养架构思维

消息驱动架构+订单状态机,二次开发,手写分布式事务框架。

470 学习 · 205 问题

查看课程