Giter Club home page Giter Club logo

jms-messenger-adapter's Introduction

JMS Messenger Adapter

Use JMS Serializer with Symfony Messenger.

PHP Version Latest Stable Version Latest Unstable Version

Build Status Coverage Status

Documentation

Installation

Add dependency with Composer:

composer require kunicmarko/jms-messenger-adapter

Symfony

Enable the bundle for all environments:

// bundles.php
return [
    //...
    KunicMarko\JMSMessengerAdapter\Bridge\Symfony\JMSMessengerAdapterBundle::class => ['all' => true],
];

Configuration

#config/packages/jms_messenger.yaml
jms_messenger:
    format: json # xml, json
    serializer_id: messenger.transport.jms_serializer

Serialized id should be configured in the messenger config, in case you did not get the recipe, just add:

#config/packages/jms_messenger.yaml
framework:
  messenger:
    enabled: true
    serializer:
      default_serializer: messenger.transport.jms_serializer

Stamps

This library provides additional stamps that will use JMS Deserialization/Serialization Context for serializing/deserializing messages.

use JMS\Serializer\SerializationContext;
use KunicMarko\JMSMessengerAdapter\Stamp\SerializationContextStamp;

$context = SerializationContext::create();
$context->setGroups(['foo']);
        
$messageBus->dispatch(new Message(), [new SerializationContextStamp($context)]);

jms-messenger-adapter's People

Contributors

goetas avatar kunicmarko20 avatar ruudk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

jms-messenger-adapter's Issues

Fix e2e build

Travis started failing for no reason, would be great to fix it, because there is no coverage if this actually works besides unit tests.

Context::$initialized should always be false

when serializing JMS\Serializer\Context, the Context::$initialized property should be omitted or overridden to false

<property name="initialized" type="boolean" expose="true"/>

ATM it is not, which causes errors when requeuing a message:


  [JMS\Serializer\Exception\LogicException]
  This context was already initialized, and cannot be re-used.


Exception trace:
 () at /code/vendor/jms/serializer/src/Context.php:65
 JMS\Serializer\Context->initialize() at /code/vendor/jms/serializer/src/Serializer.php:236
 JMS\Serializer\Serializer->visit() at /code/vendor/jms/serializer/src/Serializer.php:178
 JMS\Serializer\Serializer->deserialize() at /code/src/Messenger/Serializer.php:49
 App\Messenger\Serializer->decode() at /code/vendor/sroze/messenger-enqueue-transport/QueueInteropTransport.php:85
 Enqueue\MessengerAdapter\QueueInteropTransport->get() at /code/vendor/symfony/messenger/Worker.php:88
 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

seems like requeuing serializes the unserialized and "used" stamps of the original message.

Encoded envelope should have at least a "body" and some "headers"

Hi,

I copy/paste the code provided in the documentation. When I receive the message with my consumer I get the error

[KunicMarko\JMSMessengerAdapter\Exception\ArgumentMissing]
Encoded envelope should have at least a "body" and some "headers".

Exception trace:
at /var/application/vendor/kunicmarko/jms-messenger-adapter/src/Exception/ArgumentMissing.php:11
KunicMarko\JMSMessengerAdapter\Exception\ArgumentMissing::envelopeBodyAndHeaders() at /var/application/vendor/kunicmarko/jms-messenger-adapter/src/Serializer.php:32
KunicMarko\JMSMessengerAdapter\Serializer->decode() at /var/application/vendor/symfony/messenger/Transport/AmqpExt/AmqpReceiver.php:66
Symfony\Component\Messenger\Transport\AmqpExt\AmqpReceiver->getEnvelope() at /var/application/vendor/symfony/messenger/Transport/AmqpExt/AmqpReceiver.php:45
Symfony\Component\Messenger\Transport\AmqpExt\AmqpReceiver->get() at /var/application/vendor/symfony/messenger/Worker.php:78
Symfony\Component\Messenger\Worker->run() at /var/application/vendor/symfony/messenger/Command/ConsumeMessagesCommand.php:186
Symfony\Component\Messenger\Command\ConsumeMessagesCommand->execute() at /var/application/vendor/symfony/console/Command/Command.php:255
Symfony\Component\Console\Command\Command->run() at /var/application/vendor/symfony/console/Application.php:930
Symfony\Component\Console\Application->doRunCommand() at /var/application/vendor/symfony/framework-bundle/Console/Application.php:97
Symfony\Bundle\FrameworkBundle\Console\Application->doRunCommand() at /var/application/vendor/symfony/console/Application.php:264
Symfony\Component\Console\Application->doRun() at /var/application/vendor/symfony/framework-bundle/Console/Application.php:83
Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /var/application/vendor/symfony/console/Application.php:140
Symfony\Component\Console\Application->run() at /var/application/bin/console:42

  • Symfony 5
  • Messenger 5.0

Include missing stamps

Hi,
Symfony 4.3 provides a lot of different stamps.
Unfortunately not all of them can be serialized as they are missing from the serializer configuration.
These include:

  • DelayStamp
  • RedeliveryStamp
  • HandledStamp
  • SentToFailureTransportStamp
  • TransportMessageIdStamp

Can you add them please?
Thanks a lot for your work!

Make it conflict with 4.3

There are probably some issues between 4.2 and 4.3. Lib should conflict with 4.3 until addressed.

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.