Comments (9)
@sroze a fix for this would be nice. Still an issue meaning a lot of manual work on production environments upon setup
from messenger-enqueue-transport.
+1 to this. I'm also having problems running my consumers in production ENV. I get similar excp as @LPodolski NOT_FOUND - no queue 'transactional-emails' in vhost '/'
.
There is no clear way how to pre-create queues in prod ENV. Only solution is to enable APP_DEBUG. That is just unacceptable in prod.
from messenger-enqueue-transport.
The problem is that the queue is automatically created only when debug is active, like in dev.
File: vendor/enqueue/messenger-adapter/QueueInteropTransport.php
if ($this->debug) {
$this->contextManager->ensureExists($destination);
}
So maybe in prod you must use the command for create manually the queue:
from messenger-enqueue-transport.
The linked command has nothing to do with messenger
It is part of enqueue client library
from messenger-enqueue-transport.
In my opinion the problem concerns php enqueue library.
from messenger-enqueue-transport.
It has nothing to do with Enqueue itself, It gives you full control over what you can do.
The problem lies in this messenger adapter, its implementation.
In fact, the implementation of this adapter follows the same logic of the official amqp ext transport bundled with symfony.
from messenger-enqueue-transport.
I bumped into the same issue and found following workaround. Wrote my own transport factory (It is basically the same except one line):
`class AmqpTransportFactory implements TransportFactoryInterface
{
private $encoder;
private $decoder;
private $debug;
public function __construct(EncoderInterface $encoder, DecoderInterface $decoder, bool $debug)
{
$this->encoder = $encoder;
$this->decoder = $decoder;
$this->debug = $debug;
}
public function createTransport(string $dsn, array $options): TransportInterface
{
return new AmqpTransport($this->encoder, $this->decoder, $this->createConnection($dsn, $options));
}
public function supports(string $dsn, array $options): bool
{
return 0 === strpos($dsn, 'amqp://');
}
protected function createConnection(string $dsn, array $options) {
$connection = Connection::fromDsn($dsn, $options, $this->debug);
$connection->setup(); // <--- Workaround is here
return $connection;
}
}`
Then I override messenger.transport.ampq.factory definition in my services.yml. It works well!
from messenger-enqueue-transport.
I know this is an old thread, and this isn't an optimal solution, but for anyone looking for a quick workaround, adding the following to your services definition file, to default the 'debug' argument to true, seems to do the trick.
enqueue.messenger_transport.factory:
class: 'Enqueue\MessengerAdapter\QueueInteropTransportFactory'
arguments:
- '@messenger.default_serializer'
- '@enqueue.locator'
- true
tags: ['messenger.transport_factory']
from messenger-enqueue-transport.
Also, regarding the comments above about the official amqp ext transport, that is bundled with symfony messenger, handling this the same way, this behaviour was changed in version 4.3.
Using AMQP auto-setup in all cases, not just in debug #30579
from messenger-enqueue-transport.
Related Issues (20)
- [Symfony][4.3] Multienviroment support
- Argument 1 passed to Enqueue\Doctrine\DoctrineConnectionFactoryFactory::__construct() must be an instance of Doctrine\Common\Persistence\ManagerRegistry, instance of Doctrine\Bundle\DoctrineBundle\Registry given, called in Container8oM08ig/App_KernelDevDebugContainer.php on line 1027 HOT 2
- How to set serializer on context HOT 5
- Consumption extensions
- Update dependencies for Support Symfony 6.0 HOT 2
- The "failed" receiver does not support listing or showing specific messages
- GPS 'authCache'
- [ActiveMQ][STOMP] Every second message skipped HOT 1
- Option to send to queue when used as `framework:sender` HOT 1
- Consuming multiple Kafka topics
- Add flush($timeout) method optional call for sending messages through Enqueue\RdKafka to make it sync
- How to access the Kafka "key" property when consuming? Or any other Kafka specific metadata? HOT 1
- Symfony 7 support HOT 1
- [Symfony][4.3] MessageBusProcessor
- Symfony framework bundle incompatibility (version >= 4.3.3) HOT 3
- QueueInteropTransport with RabbitMQ and Symfony Serializer does not send stamps
- It's not possible to pass consumer specific options from DSN HOT 6
- Message is not rejected when serializer throws MessageDecodingFailedException
- Communication channels for kafka-related topics
- RdKafkaConsumer subscribes to queue name instead of topic name HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from messenger-enqueue-transport.