小编wtk*_*k13的帖子

带有绑定键的 Symfony 信使队列 - 重试策略

我正在为我工​​作的公司实施 Messenger。我发现路由键有问题。

我想将一条消息发送到两个队列。另外两个应用程序将处理此队列。一切正常,但是当处理程序抛出异常时我发现了问题。它将消息发送一个或两个重试队列加倍,因为重试队列通过绑定键匹配,这对于这个队列是相同的。

最后通过 3 次重试,我的 dlq 上有 16 条消息。你能帮我解决这个问题吗?是否可以基于队列而不是路由键创建重试策略?

我的配置看起来像:

messenger:
    failure_transport: failed
    default_bus: command.bus
    transports:
        async:
            dsn: amqp://rabbitmq:rabbitmq@rabbitmq:5672
            options:
                retry_strategy:
                    max_retries: 3
                    delay: 1000
                    multiplier: 2
                    max_delay: 0
                exchange:
                    name: olimp
                    type: topic
                queues:
                    create_miniature_v1:
                        binding_keys:
                            - first
                    create_miniature_v2:
                        binding_keys:
                            - first
        failed:
            dsn: amqp://rabbitmq:rabbitmq@rabbitmq:5672
            options:
                exchange:
                    name: olimp_dead
                    type: topic
                queues:
                    create_miniature_v1_dlq:
                        binding_keys:
                            - first
                    create_miniature_v2_dlq:
                        binding_keys:
                            - first

    routing:
        'Olimp\Messenger\TestEvent': async

    buses:
        command.bus:
            middleware:
                - Olimp\Shared\Application\Message\Middleware\EventDispatcher
                - doctrine_close_connection
                - doctrine_transaction

        event.bus:
            default_middleware: allow_no_handlers

        query.bus: ~
Run Code Online (Sandbox Code Playgroud)

我用这样的戳发送事件: …

php amqp rabbitmq symfony symfony-messenger

7
推荐指数
1
解决办法
1442
查看次数

Redis扩展Mac OS

我从这里安装了Redis扩展.我的控制台看到安装了redis,当我运行时,php -i我看到了

redis Redis Support => enabled Redis Version => 2.2.7

当我尝试创建Redis类的实例时,我得到了Fatal error: Uncaught Error: Class 'Redis' not found.

phpinfo()显示我的php.ini文件在/usr/local/php5/lib/php.ini.

我在这里找到解决方案买它不起作用.我还复制了扩展路径php-cli ini.

我尝试使用的所有扩展路径是:

  • extension = redis.so
  • extension = /usr/local/php5/lib/php/extensions/no-debug-non-zts-20151012/redis.so
  • extension = /usr/local/opt/php55-redis/redis.so

谁能帮助我?

php macos redis

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

php ×2

amqp ×1

macos ×1

rabbitmq ×1

redis ×1

symfony ×1

symfony-messenger ×1