Giter VIP home page Giter VIP logo

bernardbundle's Introduction

BernardBundle

Integrates Bernard neatly with a Symfony application.

Build Status

Getting Started

Everything starts by installing the bundle. This is done through composer by adding the following lines to your composer.json file and running composer update bernard/bernard-bundle.

{
    "require" : {
        "bernard/bernard-bundle" : "~1.0"
    }
}

Next up is adding the bundle to your kernel and configuring it in config.yml.

// app/AppKernel.php
// .. previous class definition
public function registerBundles()
{
    // .. all the other bundles you have registered.
    $bundles[] = new Bernard\BernardBundle\BernardBundle();
    // .. the rest of the method
}
# .. previous content of app/config/config.yml
bernard:
    driver: file # you can choose predis, phpredis, file, doctrine, sqs etc.

Great! You are now ready to use this diddy. Go and read the rest of the documentation on Bernard at bernard.readthedocs.org.

Running the Consumer

What good is a message queue if you don't know how to run the consumer? Luckily this bundle auto registers the commands with your application. So if you run php app/console you should see bernard:consume and bernard:produce. These work just as the documentation describes but if you are in doubt just add --help when running the command.

It is important to use --no-debug when running the consumer for longer periods of time. This is because Symfony by default in debug mode collects a lot of information and logging and if this is omitted you will run into memory problems sooner or later.

Adding Receivers

In order to know what messages needs to go where you have to register some receivers. This is done with a tag in your service definitions.

my_receiver:
    class: Acme\Receiver
    # public: true # Make sure the service is public
    tags:
         - { name: bernard.receiver, message: SendNewsletter }
         - { name: bernard.receiver, message: ImportUsers }

As the example shows it is possible to register the same receiver for many different message types.

Configuration Options

There are different options that can be set that changes the behaviour for various drivers.

Doctrine

When using the doctrine driver it can be useful to use a seperate connection when using Bernard. In order to change it use the connection option. This also needs to be set if you default connection is called anything else than default.

doctrine:
    dbal:
        connections:
            bernard:
                host:     "%database_host%"
                charset:  UTF8

bernard:
    driver: doctrine
    options:
        connection: bernard # default is the default value

FlatFile

The file driver needs to know what directory it should use for storing messages and its queue metadata.

bernard:
    driver: file
    options:
        directory: %kernel.cache_dir%/bernard

The above example will dump your messages in the cache folder. In most cases you will want to change this to something because the cache folder is deleted every time the cache is cleared (obviously).

PhpAmqp / RabbitMQ

PhpAmqp depends on a service called old_sound_rabbit_mq.connection.default with a configured connection instance that extends \PhpAmqpLib\Connection\AbstractConnection class. If you want to use a different name use the phpamqp_service option:

bernard:
    driver: phpamqp
    options:
        phpamqp_service: my_phpamqp_service

You need to define the phpamqp_exchange. Optional, you can define phpamqp_default_message_parameters:

bernard:
    driver: phpamqp
    options:
        phpamqp_exchange: my_phpamqp_service
        phpamqp_default_message_parameters:
            content_type: application/json
            delivery_mode: 2

PhpRedis

PhpRedis depends on a service called snc_redis.bernard with a configured Redis instance. If you want to use a different name use the phpredis_service option:

bernard:
    driver: phpredis
    options:
        phpredis_service: my_redis_service

If you're using the SncRedisBundle you have to set logging to false for the bernhard client to ensure that is is a Redis instance and not wrapped. Also, if the consumer is throwing RedisException: read error on connection, you need to set connection_timeout (see SncRedisBundle configuration options) option to a value higher than 5 (seconds).

IronMQ

When using the IronMQ driver you have to configure an IronMQ connection instance. You can configure it like the following:

services:
    ironmq_connection:
        class: IronMQ
        arguments:
            - { token: %ironmq_token%, project_id: %ironmq_project_id% }
        public: false

bernard:
    driver: ironmq
    options:
        ironmq_service: ironmq_connection

Amazon SQS

To use Amazon SQS, configure your driver like this:

services:
    my_sqs_client:
        class: Aws\Sqs\SqsClient
        factory: Aws\Sqs\SqsClient::factory
        arguments:
            region: "your aws region" # e.g. "eu-west-1"
            key: "your aws user's key"
            secret: "your aws user's secret"

bernard:
    driver: sqs
    options:
        sqs_service: my_sqs_client
        sqs_queue_map: # optional for aliasing queue urls (default alias is the url section after the last "/"), e.g.:
            send_newsletter: https://sqs.eu-west-1.amazonaws.com/...
        prefetch: 1 # optional, but beware the default is >1 and you may run into invisibility timeout problems with that

Pheanstalk

To use Pheanstalk (pda/pheanstalk), configure your driver like this:

services:
    my.pheanstalk.connection:
        class: Pheanstalk\Pheanstalk
        arguments:
            - %some.parameter.containing.pheanstalk.host%

bernard:
    driver: pheanstalk
    options:
        pheanstalk_service: my.pheanstalk.connection

bernardbundle's People

Contributors

acrobat avatar bendavies avatar danydev avatar filipegarcia avatar hacfi avatar henrikbjorn avatar holtkamp avatar johanderuijter avatar karser avatar lakiboy avatar maltewunsch avatar mente avatar robinvdvleuten avatar ruudk avatar sagikazarmark avatar samnela avatar sbacelic avatar stephpy avatar toin0u avatar tompedals avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

bernardbundle's Issues

Tag a new release

Hi,

Would you consider tag a new release of the Bundle? There have been several additions since the last released tag (January from the past year).

Thanks.
Christian.

Plans for version 2.x

Are there any plans on releasing a tag or release for version 2.x ? It seems like I need to install dev-master (branch alias 2.0.x-dev) in order to be able to work with amqp/rabbitmq, but there is no tag available.

Are there open issues for version 2, or just waiting for a release? Build seems to pass.

Symfony4, my_receiver is not supported error

I tried using bernard-bundle in my Symfony 4.3 project to run a basic helloWorld background task, but when I try to run bernard: consume I get an error

In SimpleRouter.php line 38:
Given "my_receiver" is not supported. 

This is the services.yaml part

 my_receiver:
        class: App\BackgroundTasks\Receiver\
        tags:
            - { name: bernard.receiver, message: 'HelloWorld' }

It says the error is in SimpleRouter, so I tried debugging there using

var_dump($name);
var_dump($receiver);
var_dump(class_exists($receiver)); 

and I got

string(10) "HelloWorld"
string(11) "my_receiver"
bool(false)

Is this a bug because of Symfony? Or am I missing something?

Allow to specify method on receiver service tag

Hi,

would be cool to be able to specify which method should handle message processing.

Like so

my_receiver:
    class: Acme\Receiver
    # public: true # Make sure the service is public
    tags:
         - { name: bernard.receiver, message: SendNewsletter, method: sendMyNewsletter }
         - { name: bernard.receiver, message: ImportUsers }

Tag 1.1.1?

Hello.

Tag 1.1.1 is not identified as a release by Github but is what Composer seems to prefer (as it seems more updated, because it's a hotfix update), but...In tag 1.1.1, this commit does not seem to be included: cf0825f , and so the root key for configuration for Bernard in config.yml seems to be bernard_bernard and not just bernard.

This is not a huge problem, as I can just fix tag 1.1.0 in my composer.json, but it does not seems to be very consistent..So..can you check it and fix it (probably adding a new tag, 1.1.2, with the updates of 1.1.1 and 1.1.0 joined), please?

Thanks. =)

New release

Hi,

we should make a new release, current 2.0 don't have new normalizer name and it result in not found errors.

What is the most sane way to add a normalizer

Hi, I'm trying to use this BernardBundle in my application but I can't for the life of me figure out how to add a Symfony's GetSetMethodNormalizer to the AggregateNormalizer.

So far I've tried to manually create a service for the GetSetMethodNormalizer and tag with with the bernard.normalizer tag. But now it always puts this normalizer before the EnvelopeNormalizer which breaks everything.

I've also tried overwriting the bernard.normalizer service and passing al the normalizers myself, but that doesn't seem to work, nor does it seem like a sane option. (right?)

I've looked through all the source but I can't find any documentation or any indication for how this can be done. If I look at the Bernard documentation it self but that tells me to create the AggregateNormalizer myself which seems to defeat the entire purpose of using this bundle.

<?php

use Bernard\Normalizer\PlainMessageNormalizer;
use Bernard\Normalizer\EnvelopeNormalizer;
use Bernard\Serializer;
use Normalt\Normalizer\AggregateNormalizer;
use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;

$aggregateNormalizer = new AggregateNormalizer([
    new EnvelopeNormalizer(),
    new GetSetMethodNormalizer(),
    new PlainMessageNormalizer(),
]);

$serializer = new Serializer($aggregateNormalizer);
$envelope = $serializer->deserialize($json);

IronMQ support

Just stumble upon this bundle. There is not IronMQ support here yet, right?

iron-mq driver outdated

Hi!

I'm trying to use Bernard with the iron-mq driver but seems its expecting the version 1.x of the core library, although they're currently at version 4.x

Thats tricky as there are major differences between those versions, one of those is that 1.x uses older ironMQ servers and their api version 1, while the 4.x library uses the api v2, and isn't currently possible (as far as i found) use such api version with new ironmq accounts

is there planned any upgrade for such driver?

Thanks a lot!

Unable to use phpredis driver

I am not able to use the phpredis driver. I am using the following versions: bernard/bernard => 50bc62608f8ee981c42522045bd94ce07b5d6f49, bernard/bernard-bundle => bb0ced39d96d8d8c3c2f96642455eab075b352d9, and snc/redis-bundle => c07fde6155bce0647204fbd4f9b249df95cc2922

Here are my config files:

bernard_bernard:
    driver: phpredis
    serializer: simple
snc_redis:
    clients:
        bernard:
            type: phpredis
            alias: bernard
            dsn: %redis_dsn%
            logging: false
            options:
                prefix: %redis_prefix%

There seems to be two issues, one that I can resolve, and the other I can't seem to figure out.

First the one that I can resolve:

SncRedisBundle restructured their client (snc/SncRedisBundle@30565b8#diff-babf1c52f9bae7fffab1219e227de24eR21)

Basically, they no longer return a instance of \Redis and instead return an instance of ClientInterface

I can temporarily bypass to change the typehint in the driver (https://github.com/bernardphp/bernard/blob/master/src/Bernard/Driver/PhpRedisDriver.php#L17) in the bernard/bernard bundle.

Now to the second issue I can't seem to figure out:

When I try and run the app/console bernard:consume my-message-queue command, I instantly receive a redis exception:

  [RedisException]
  read error on connection

I'm open to suggestions on how to debug this.

[conflict]Cannot install version 2.x

 Problem 1
    - bernard/bernard-bundle v2.0.2 requires bernard/bernard 1.0.*@dev -> satisfiable by bernard/bernard[1.0.0-alpha1, 1.0.0-alpha2, 1.0.0-alpha3, 1.0.0-alpha4, 1.0.x-dev, v1.0.0-alpha5, v1.0.0-alpha6, v1.0.0-alpha7] but these conflict with your requirements or minimum-stability.
    - bernard/bernard-bundle v2.0.1 requires bernard/bernard 1.0.*@dev -> satisfiable by bernard/bernard[1.0.0-alpha1, 1.0.0-alpha2, 1.0.0-alpha3, 1.0.0-alpha4, 1.0.x-dev, v1.0.0-alpha5, v1.0.0-alpha6, v1.0.0-alpha7] but these conflict with your requirements or minimum-stability.
    - bernard/bernard-bundle 2.0.0 requires bernard/bernard 1.0.*@dev -> satisfiable by bernard/bernard[1.0.0-alpha1, 1.0.0-alpha2, 1.0.0-alpha3, 1.0.0-alpha4, 1.0.x-dev, v1.0.0-alpha5, v1.0.0-alpha6, v1.0.0-alpha7] but these conflict with your requirements or minimum-stability.
    - Installation request for bernard/bernard-bundle ^2.0 -> satisfiable by bernard/bernard-bundle[2.0.0, v2.0.1, v2.0.2].

Non-existent service when registering commands

When I try to run a Symfony command I get this error:

[Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException] You have requested a non-existent service "bernard.command.consume".

It seems that the kernel is not completely booted before trying to register commands.

I'm on Symfony 2.3.

Sf 3.4/4.0 compatibility

  • Check the bundle against symfony 3.4 and fix the deprecations
  • Make sure the bundle can be installed/used with sf 4

Allow in_memory queue

I'd like to have a in memory queue for my test environment but there is no need to do so.

I'm thinking off implementing it like this:

diff --git a/DependencyInjection/BernardExtension.php b/DependencyInjection/BernardExtension.php
index a6861f6..6120d41 100644
--- a/DependencyInjection/BernardExtension.php
+++ b/DependencyInjection/BernardExtension.php
@@ -15,9 +15,15 @@ class BernardExtension extends ConfigurableExtension
         $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
         $loader->load('services.xml');

-        $container->setAlias('bernard.driver', 'bernard.driver.'.$config['driver']);
+        if ('memory' !== $config['driver']) {
+            $container->setAlias('bernard.driver', 'bernard.driver.'.$config['driver']);
+        }

         switch ($config['driver']) {
+            case 'memory':
+                $this->registerInMemoryConfiguration($config['options'], $container);
+                break;
+
             case 'doctrine':
                 $this->registerDoctrineConfiguration($config['options'], $container);
                 break;
@@ -50,6 +56,11 @@ class BernardExtension extends ConfigurableExtension
         $this->registerListeners($config['listeners'], $container);
     }

+    private function registerInMemoryConfiguration(array $config, ContainerBuilder $container)
+    {
+        $container->setAlias('bernard.queue_factory', 'bernard.queue_factory.in_memory_factory');
+    }
+
     private function registerDoctrineConfiguration($config, ContainerBuilder $container)
     {
         $container->setAlias('bernard.dbal.connection', 'doctrine.dbal.'.$config['connection'].'_connection');
diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php
index 7dd7443..3a89b2a 100644
--- a/DependencyInjection/Configuration.php
+++ b/DependencyInjection/Configuration.php
@@ -18,7 +18,7 @@ class Configuration implements ConfigurationInterface
                 ->enumNode('driver')
                     ->isRequired()
                     ->cannotBeEmpty()
-                    ->values(['doctrine', 'file', 'phpamqp', 'phpredis', 'predis', 'ironmq', 'sqs'])
+                    ->values(['memory', 'doctrine', 'file', 'phpamqp', 'phpredis', 'predis', 'ironmq', 'sqs'])
                 ->end()

                 ->arrayNode('options')
diff --git a/Resources/config/services.xml b/Resources/config/services.xml
index 5a6fa06..6c317eb 100644
--- a/Resources/config/services.xml
+++ b/Resources/config/services.xml
@@ -20,11 +20,15 @@
             <argument type="service" id="event_dispatcher" />
         </service>

-        <service id="bernard.queue_factory" class="Bernard\QueueFactory\PersistentFactory" public="false">
+        <service id="bernard.queue_factory.in_memory_factory" class="Bernard\QueueFactory\InMemoryFactory" public="false" />
+
+        <service id="bernard.queue_factory.persistent_factory" class="Bernard\QueueFactory\PersistentFactory" public="false">
             <argument type="service" id="bernard.driver" />
             <argument type="service" id="bernard.serializer" />
         </service>

+        <service id="bernard.queue_factory" alias="bernard.queue_factory.persistent_factory" />
+
         <service id="bernard.normalizer" class="Normalt\Normalizer\AggregateNormalizer" public="false">
             <argument type="collection" />
         </service>

Is that the way to go? Then I can finalize it and create a PR.

2.0.1 not compatible with 2.0.0

Using DefaultMessage you now get the following error:

UnexpectedValueException: No supported normalizer found for "Bernard\Message\DefaultMessage".

/workspace/vendor/bernard/normalt/src/Normalizer/AggregateNormalizer.php:43
/workspace/vendor/bernard/bernard/src/Normalizer/EnvelopeNormalizer.php:36
/workspace/vendor/bernard/normalt/src/Normalizer/AggregateNormalizer.php:40
/workspace/vendor/bernard/bernard/src/Serializer.php:41
/workspace/vendor/bernard/bernard/src/Queue/PersistentQueue.php:98
/workspace/vendor/bernard/bernard/src/Consumer.php:81

Is tihs a bug or am i missing an upgrade guide?

Symfony autowire issue

While creating a receiver which implements Bernard\Consumer there is a problem with autowiring because interface Bernard\Router needs to be specified in services.yaml manually like:

    Bernard\Router: '@bernard.router'

That IMO should be done by DI configuration out-of-the-box.
I didn't define anything else than driver in bernard.yaml

Wrong composer dependency of bernardphp

The 1.1.0 tag is using bernardphp 1.0.*@dev:
https://github.com/bernardphp/BernardBundle/blob/1.1.0/composer.json#L13

And a superior version are using a previous version:
https://github.com/bernardphp/BernardBundle/blob/1.1.1/composer.json#L12
https://github.com/bernardphp/BernardBundle/blob/1.1.2/composer.json#L12

This is causing an error on Doctrine driver, a simple "space" is causing "silent" errors.
https://github.com/bernardphp/bernard/blob/0.12.3/src/Bernard/Driver/DoctrineDriver.php#L106

Edit:

composer require bernard/bernard-bundle
Using version ^1.1 for bernard/bernard-bundle                 
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)                 
  - Installing bernard/bernard (0.12.3)
    Loading from cache

  - Installing bernard/bernard-bundle (1.1.2)
    Loading from cache

How to reach produced Object in Consumer?

Hi, im able to produce messages with this configuration;

bernard.yaml

bernard:
    driver: file # you can choose predis, phpredis, file, doctrine, sqs etc.

services.yaml

  my.producer:
      class: App\Queue\MailProducer
      arguments: [
          '@bernard.producer',
          '@jms_serializer'
          ]

MailProducer.php

use App\Entity\Mail;
use Bernard\Message\PlainMessage;
use Bernard\Producer;
use JMS\Serializer\Serializer;
use JMS\Serializer\SerializerInterface;

class MailProducer
{

    /**
     * @var Producer
     */
    protected $producer;
    /**
     * @var Serializer
     */
    private $serializer;

    public function __construct
    (
        Producer $producer,
        SerializerInterface $serializer
    )
    {
        $this->producer = $producer;
        $this->serializer = $serializer;
    }

    public function produce(Mail $mail)
    {

        $serializedData = $this->serializer->serialize($mail, 'json');

        $message = new PlainMessage('mail', ['mail' => $serializedData]);
        $this->producer->produce($message);
    }
}

when I call produce method in MailProducer service, I see the files, Berbard produces messages. Its perfect.
But then, how may I reach my Mail object on consumer?

Microsoft Azure Queue Storage Support?

Hi all,
Do you have any plans to implement integration with microsoft azure eg. Azure Queue Storage?
If not, do you have any documentation for developers how to create own driver?

PD

phpredis missing in configuration

After the merge of #6 you get an error:

[Symfony\Component\Config\Definition\Exception\InvalidConfigurationException]
  The value "phpredis" is not allowed for path "bernard_bernard.driver". Permissible values: "file", "predis", "doctrine"

Most likely because the phpredis driver is missing from the drivers enum in configuration.

Dependency hell

Cannot install bundle under any version :( nor 2.0 nor 1.0 in Symfony 4. I really would like NOT to install unstable dependencies.

composer req bernard/bernard-bundle:~1.0

  Problem 1
    - bernard/bernard-bundle 1.1.2 requires symfony/framework-bundle ~2.1 -> satisfiable by symfony/framework-bundle[2.1.x-dev, 2.2.x-dev, 2.3.x-dev, 2.4.x-dev, 2.5.x-dev, 2.6.x-dev, 2.7.x-dev, 2.8.x-dev, v2.1.0, (and so on…)] but these conflict with your requirements or minimum-stability.
    - bernard/bernard-bundle 1.1.1 requires symfony/framework-bundle ~2.1 -> satisfiable by symfony/framework-bundle[2.1.x-dev, 2.2.x-dev, 2.3.x-dev, 2.4.x-dev, 2.5.x-dev, 2.6.x-dev, 2.7.x-dev, 2.8.x-dev, v2.1.0, v2.1.1, (and so on…)] but these conflict with your requirements or minimum-stability.
    - bernard/bernard-bundle 1.1.0 requires bernard/bernard 1.0.*@dev -> satisfiable by bernard/bernard[1.0.0-alpha1, 1.0.0-alpha2, 1.0.0-alpha3, 1.0.0-alpha4, 1.0.0-alpha9, 1.0.x-dev, v1.0.0-alpha5, v1.0.0-alpha6, v1.0.0-alpha7, v1.0.0-alpha8] but these conflict with your requirements or minimum-stability.
    - bernard/bernard-bundle 1.0.1 requires symfony/framework-bundle ~2.1 -> satisfiable by symfony/framework-bundle[2.1.x-dev, 2.2.x-dev, 2.3.x-dev, 2.4.x-dev, 2.5.x-dev, 2.6.x-dev, 2.7.x-dev, 2.8.x-dev, v2.1.0, v2.1.1, (and so on…)] but these conflict with your requirements or minimum-stability.
    - bernard/bernard-bundle 1.0.0 requires symfony/framework-bundle ~2.1 -> satisfiable by symfony/framework-bundle[2.1.x-dev, 2.2.x-dev, 2.3.x-dev, 2.4.x-dev, 2.5.x-dev, 2.6.x-dev, 2.7.x-dev, 2.8.x-dev, v2.1.0, (and so on…)] but these conflict with your requirements or minimum-stability.
    - Installation request for bernard/bernard-bundle ~1.0 -> satisfiable by bernard/bernard-bundle[1.0.0, 1.0.1, 1.1.0, 1.1.1, 1.1.2].

Configuration node "bernard" does not exist

Hi there, I'm just trying this bundle and found this problem.
There is no extension able to load the configuration for "bernard".

The configuration node should be: "bernard_bernard"

The guide is wrong? Or it is just a little bug ?

Thanks for this!

How to reach Object on Consumer?

Hi, im able to produce messages with this configuration;

bernard.yaml

bernard:
    driver: file # you can choose predis, phpredis, file, doctrine, sqs etc.

services.yaml

  my.producer:
      class: App\Queue\MailProducer
      arguments: [
          '@bernard.producer',
          '@jms_serializer'
          ]

MailProducer.php

use App\Entity\Mail;
use Bernard\Message\PlainMessage;
use Bernard\Producer;
use JMS\Serializer\Serializer;
use JMS\Serializer\SerializerInterface;

class MailProducer
{

    /**
     * @var Producer
     */
    protected $producer;
    /**
     * @var Serializer
     */
    private $serializer;

    public function __construct
    (
        Producer $producer,
        SerializerInterface $serializer
    )
    {
        $this->producer = $producer;
        $this->serializer = $serializer;
    }

    public function produce(Mail $mail)
    {

        $serializedData = $this->serializer->serialize($mail, 'json');

        $message = new PlainMessage('mail', ['mail' => $serializedData]);
        $this->producer->produce($message);
    }
}

when I call produce method in MailProducer service, I see the files, Berbard produces messages. Its perfect.
But then, how may I reach my Mail object on consumer?

Wrong version requirement for bernard/bernard

If I issue composer require bernard/bernard-bundle on the command line, composer terminates with the following error message:

Problem 1
- Installation request for bernard/bernard-bundle ^1.1 -> satisfiable by bernard/bernard-bundle[1.1.0].
- bernard/bernard-bundle 1.1.0 requires bernard/bernard 1.0.*@dev -> no matching package found.

Apparently, Bernard's latest version is 0.12.2, so there must be a typo in the composer.json of this bundle.

weird behaviour using doctrine driver

Hello,

I've tested alpha9 release of bernard with a sf3.4 project under a small use case having the producer and consumer processes on the same machine.

Having the consumer running in the background, the produced messages were consumed very quickly (and expected mails were sent), but looking at the bernard_messages table, it was empty.

If the consumer is not running, the messages are saved in the bernard_messages table

New release for symfony 3.0 support

Hi,

could you please tag a new release which includes the composer version requirements change for symfony 3.0 support? The latest 1.1.2 still uses "symfony/framework-bundle": "~2.1"

thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.