首页 文章

Spring AMQP确保多线程环境中的消息顺序

提问于
浏览
0

如果使用相同的发布通道 - >交换 - >队列 - >接收通道,RabbitMQ可以保证消息顺序 . 看来Spring AMQP允许我保证除发布 Channels 之外的所有部分 . 这导致消息出现故障 . 以下是问题案例:

1.)我有一个单独的线程在一个交换机上按顺序发布消息2.)我有一组其他线程在不同的交换机上发布消息,有时为不同的交换机创建新的消费者

使用缓存的连接工厂,它有一个通道缓存 . 每次发布时,它都会进入缓存以获取 Channels . 由于其他线程正在发布和使用,因此无法保证相同的通道将用于我的主线程的连续发布 . 即使我有一个缓存也是如此 . 有没有人解决这个问题?

理想情况下,我想要一个专门的发布者 - 交换组合 Channels ,或者至少是一个专门的发布渠道 . 我也没有看到提供方式 . 当RabbitMQ有一个保证订单的机制时,如果没有办法保证发布顺序,这似乎是Spring AMQP的一个重大缺陷 .

1 回答

  • 0

    您必须为每个发布者使用专用连接(因此:连接工厂) .

    或者,您可以使用 RabbitTemplate.execute() 并使用回调中提供的通道发布al消息 .

相关问题