有人知道当我在symfony中使用messanger.yaml包进行通信并且我希望发送的消息是可重用的时该怎么做吗?multiple use是什么意思
kyvafyod1#
消息被使用后,通常会从它所在的队列中删除(因为通常您只想顺序处理队列中的所有消息并删除它们)。如果有多个消费者指向该队列,则第一个消费者处理将获得该队列,然后将删除该消息,这意味着所有其他消费者都不会获得该消息。这样想吧:如果您不从队列中删除消息,您的消费者将一次又一次地循环它们。但是,作为一种解决方法,您可以创建多个队列(每个队列对应一个消费者),并将交换定义为在“扇出”模式下工作,这意味着每次通过定义的传输发送消息时,都会将其发送到其交换中定义的每个队列。以下是配置示例:
framework: messenger: transports: transportname: dsn: '%env(MESSENGER_TRANSPORT_DSN)%' options: exchange: name: messages type: fanout queues: queue1: ~ queue2: ~ routing: 'App\Message\MessageNotification': transportname
字符串
1条答案
按热度按时间kyvafyod1#
消息被使用后,通常会从它所在的队列中删除(因为通常您只想顺序处理队列中的所有消息并删除它们)。如果有多个消费者指向该队列,则第一个消费者处理将获得该队列,然后将删除该消息,这意味着所有其他消费者都不会获得该消息。
这样想吧:如果您不从队列中删除消息,您的消费者将一次又一次地循环它们。
但是,作为一种解决方法,您可以创建多个队列(每个队列对应一个消费者),并将交换定义为在“扇出”模式下工作,这意味着每次通过定义的传输发送消息时,都会将其发送到其交换中定义的每个队列。
以下是配置示例:
字符串