sroze / messenger-enqueue-transport

Uses Enqueue with Symfony's Messenger component.
MIT License
191 stars 55 forks source link

[RabbitMQ][Symfony] #76

Closed kor3k closed 5 years ago

kor3k commented 5 years ago

i have this weird error with symfony/messenger v4.3.1 and sroze/messenger-enqueue-transport v0.3. it was working with symfony/messenger v4.2 and sroze/messenger-enqueue-transport v0.2. looks like the problem raises in acking a message.

21:42:57 INFO      [messenger] Received message "App\Messenger\Message\BidMessage" ["message" => App\Messenger\Message\BidMessage^ { …},"class" => "App\Messenger\Message\BidMessage"]
21:42:57 INFO      [messenger] Sending message "App\Messenger\Message\Notification\ParticipantNotificationMessage" with "Enqueue\MessengerAdapter\QueueInteropTransport" ["message" => App\Messenger\Message\Notification\ParticipantNotificationMessage^ { …},"class" => "App\Messenger\Message\Notification\ParticipantNotificationMessage","sender" => "Enqueue\MessengerAdapter\QueueInteropTransport"]
21:42:57 INFO      [messenger] Message "App\Messenger\Message\BidMessage" handled by "App\Messenger\Handler\BidHandler::__invoke" ["message" => App\Messenger\Message\BidMessage^{ …},"class" => "App\Messenger\Message\BidMessage","handler" => "App\Messenger\Handler\BidHandler::__invoke"]
21:42:57 INFO      [messenger] App\Messenger\Message\BidMessage was handled successfully (acknowledging to transport). ["message" => App\Messenger\Message\BidMessage^ { …},"class" => "App\Messenger\Message\BidMessage"]

In ClientMethods.php line 998:

  [Bunny\Exception\ClientException (406)]
  PRECONDITION_FAILED - unknown delivery tag 0

Exception trace:
 () at /code/vendor/bunny/bunny/src/Bunny/ClientMethods.php:998
 Bunny\AbstractClient->awaitExchangeDeclareOk() at /code/vendor/bunny/bunny/src/Bunny/ClientMethods.php:958
 Bunny\AbstractClient->exchangeDeclare() at /code/vendor/bunny/bunny/src/Bunny/ChannelMethods.php:47
 Bunny\Channel->exchangeDeclare() at /code/vendor/enqueue/amqp-bunny/AmqpContext.php:161
 Enqueue\AmqpBunny\AmqpContext->declareTopic() at /code/vendor/sroze/messenger-enqueue-transport/AmqpContextManager.php:64
 Enqueue\MessengerAdapter\AmqpContextManager->ensureExists() at /code/vendor/sroze/messenger-enqueue-transport/QueueInteropTransport.php:65
 Enqueue\MessengerAdapter\QueueInteropTransport->get() at /code/vendor/symfony/messenger/Worker.php:90
 Symfony\Component\Messenger\Worker->run() at /code/vendor/symfony/messenger/Worker/StopWhenRestartSignalIsReceived.php:54
 Symfony\Component\Messenger\Worker\StopWhenRestartSignalIsReceived->run() at /code/vendor/symfony/messenger/Command/ConsumeMessagesCommand.php:228
 Symfony\Component\Messenger\Command\ConsumeMessagesCommand->execute() at /code/vendor/symfony/console/Command/Command.php:255
 Symfony\Component\Console\Command\Command->run() at /code/vendor/symfony/console/Application.php:939
 Symfony\Component\Console\Application->doRunCommand() at /code/vendor/symfony/framework-bundle/Console/Application.php:87
 Symfony\Bundle\FrameworkBundle\Console\Application->doRunCommand() at /code/vendor/symfony/console/Application.php:273
 Symfony\Component\Console\Application->doRun() at /code/vendor/symfony/framework-bundle/Console/Application.php:73
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /code/vendor/symfony/console/Application.php:149
 Symfony\Component\Console\Application->run() at /code/bin/console:38

composer info:

enqueue/amqp-bunny                  0.9.11             Message Queue Amqp Transport
enqueue/amqp-tools                  0.9.8              Message Queue Amqp Tools
enqueue/dsn                         0.9.2              Parse DSN
enqueue/enqueue                     0.9.11             Message Queue Library
enqueue/enqueue-bundle              0.9.10             Message Queue Bundle
enqueue/null                        0.9.2              Enqueue Null transport
sroze/messenger-enqueue-transport   0.3.0              Enqueue adapter for Symfony Messenger component
symfony/framework-bundle            v4.3.1             Symfony FrameworkBundle
symfony/messenger                   v4.3.1             Symfony Messenger Component
kunicmarko/jms-messenger-adapter    dev-master 3aa771b Use JMS Serializer with Symfony Messenger.
KonstantinCodes commented 5 years ago

@kor3k I've had a problem with ACKing as well. (But in Kafka)

I pushed my fix. No guarantee here, but if you try to use my fork, and let me know if it fixes the problem, that would be cool.

add in composer.json:

"repositories": [
        {
            "type": "vcs",
            "url":  "git@github.com:KonstantinCodes/messenger-enqueue-transport.git"
        }
    ]

and in the require section, change sroze/messenger-enqueue-transport to this:

"sroze/messenger-enqueue-transport": "dev-feature/interop-message-stamp",

then composer update sroze/messenger-enqueue-transport

Now, this fix has not been reviewed by the maintainers of this package. And also, I didn't test it on AMQP. So please don't use in production, just as an experiment. Thanks!

Don't forget to delete this config, after you're done testing. I don't wanna mess up your application with my code!

kor3k commented 5 years ago

@KonstantinCodes man, you rock! that made it work again. thank you a lot! @sroze please can this be merged?