rabbitmq 可重用消息Symfony Messanger库

q3qa4bjr  于 2023-08-05  发布在  RabbitMQ
关注(0)|答案(1)|浏览(91)

有人知道当我在symfony中使用messanger.yaml包进行通信并且我希望发送的消息是可重用的时该怎么做吗?
multiple use是什么意思

  • 关键是,当我为特定队列发送消息时,我希望每个message:consumer都显示相同的消息,因为当前,由于在执行message:consumer之后,消息从队列中消失,我会请求帮助
kyvafyod

kyvafyod1#

消息被使用后,通常会从它所在的队列中删除(因为通常您只想顺序处理队列中的所有消息并删除它们)。如果有多个消费者指向该队列,则第一个消费者处理将获得该队列,然后将删除该消息,这意味着所有其他消费者都不会获得该消息。
这样想吧:如果您不从队列中删除消息,您的消费者将一次又一次地循环它们。
但是,作为一种解决方法,您可以创建多个队列(每个队列对应一个消费者),并将交换定义为在“扇出”模式下工作,这意味着每次通过定义的传输发送消息时,都会将其发送到其交换中定义的每个队列。
以下是配置示例:

framework:
    messenger:
        transports:
            transportname:
                dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
                options:
                    exchange:
                        name: messages
                        type: fanout
                    queues:
                        queue1: ~
                        queue2: ~
        routing:
            'App\Message\MessageNotification': transportname

字符串

相关问题