spring – 具有多个实例的微服务事件驱动设计
作者:互联网
在片刻,我们设计并计划将我们的系统转换为微服务架构模式.
为了松散耦合,我们考虑使用JMS主题的事件驱动设计.这看起来很棒.但我现在不知道如何通过微服务的多个实例解决问题.
对于故障转移和负载平衡,我们有每个服务的n个实例.如果事件发布到主题,则每个实例将接收并处理该事件.
可以使用数据存储中的锁定和处理状态来处理此问题.但是这个解决方案看起来非常昂贵,每个实例都有相同的工作.这对我来说不是负担.
这种模式有一些好的解决方案或最佳实践吗?
解决方法:
为什么不使用队列而不是主题?然后你的实例将竞争消息而不是全部获得副本.
编辑
rabbitmq可能更适合你 – 发布到扇出交换并拥有任意数量的队列,每个队列都有任意数量的竞争消费者.
我还看到了竞争客户端使用相同客户端ID连接的JMS主题.一些(所有?)经纪人只允许一个这样的客户消费.其他人一直试图重新连接,直到目前的消费者死亡.
标签:spring,jms,microservices,spring-jms,event-driven-design 来源: https://codeday.me/bug/20190612/1222924.html