我正在为我工作的公司实施 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)
我用这样的戳发送事件: …
我从这里安装了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.
我尝试使用的所有扩展路径是:
谁能帮助我?