小啊小码农
2021-05-30 16:51
采纳率: 33.3%
浏览 24
已结题

关于SpringBoot和Rabbitmq的问题

场景大概就是供应商发货每次发货给不同的客户,然后把一些发货详情广播出来,每个客户有一个队列,但是如果一个小时没有人消费这个队列就会自动删除,也就是非持久化的比如

我这边作为消费者 我直接监听这个队列是能正常监听的

但是当生产者那边还没发送GD1880这个队列的时候我项目运行确实会自动创建这个队列,可是创建出来的和他那边的不一样,导致他那边如果发送GD1880的列队就会报错,因为他的是非持久化并且定义了过期时间的  但是我的没有,

本人是新手,求大佬们指点下,我这边消费者怎么去创建和他一摸一样的队列这是我后面改的 false  但是创建出来的没有过期时间  也不行,有没有大佬能在闲暇之余帮老弟解决下,两包香烟送上,感激不尽13412345515微信

  • 收藏

1条回答 默认 最新

  • 程序猿小亮 2021-05-31 09:47
    已采纳

    根据你场景的描述:供应商发货每次发货给不同的客户,然后把一些发货详情广播出来,这是典型的发布订阅模式,而不应该使用非持久化队列,针对每个客户去建立一个队列,这样的设计是有问题的。最佳的设计是设计成发布订阅模式,所有的发货详情都发布到一个队列,所有的客户都去订阅这一个队列就可以了。

    1、非持久化队列,存在消息丢失,发布订阅模式,只要客户订阅就都能消费消息。

    2、每个客户创建一个队列,队列不断创建和销毁,性能会比较差

     

    打赏 评论

相关推荐 更多相似问题