Hi I have applications that is dispatching commands(messages) to Amazon SQS queues. I have working environment and my commands are in the queue, but in the wrong format like this:
{ "Messages": [ { "MessageId": "f3373e0d-b47e-2a46-51d8-38dc1ee8f07e", "ReceiptHandle": "dzpfgjsnrkwzmzzvzvddepxfpmxwipviybehoedxeolvbndunmceerozsanhwennjvgeunbsfxfxrrywrlkpeuifcnggnslzfgpkilnrwnlyegkcmlaowvcikxhsisujptanjrboedurezuzihngpfmsyxxzmtqghqyrfyycthxuamqnxblprvbbo", "MD5OfBody": "6a69c6c1e53718f891a409e5a9ba98a4", "Body": "O:36:\"Symfony\\Component\\Messenger\\Envelope\":2:{s:44:\"\0Symfony\\Component\\Messenger\\Envelope\0stamps\";a:1:{s:46:\"Symfony\\Component\\Messenger\\Stamp\\BusNameStamp\";a:1:{i:0;O:46:\"Symfony\\Component\\Messenger\\Stamp\\BusNameStamp\":1:{s:55:\"\0Symfony\\Component\\Messenger\\Stamp\\BusNameStamp\0busName\";s:21:\"messenger.bus.default\";}}}s:45:\"\0Symfony\\Component\\Messenger\\Envelope\0message\";O:29:\"App\\Message\\CreatePostCommand\":1:{s:17:\"\0*\0postDataObject\";O:29:\"App\\DataObject\\PostDataObject\":5:{s:5:\"title\";s:11:\"Lorem ipsum\";s:7:\"excerpt\";s:27:\"Lorem ipsum dolor sit amet.\";s:7:\"content\";s:495:\"Donec laoreet maximus lacus, nec lacinia risus rutrum vitae. Morbi tortor sapien, ornare in congue ac, aliquam quis felis. Pellentesque venenatis, elit eget vehicula viverra, elit lacus congue ante, et accumsan est arcu vitae purus. Aliquam erat volutpat. Nullam rhoncus risus augue, ut rhoncus leo sollicitudin sed. Maecenas fringilla, metus pretium tristique sodales, sem ante condimentum massa, a facilisis ligula lacus quis purus. Vestibulum pharetra rutrum velit, in rutrum mi mollis vitae.\";s:6:\"author\";s:14:\"Bartosz Belski\";s:12:\"published_at\";N;}}}", "Attributes": { "SenderId": "AIDAIT2UOQQY3AUEKVGXU", "SentTimestamp": "1649947456026" } } ] }
I suspect that this is fault of serialization. I want to store it as a json inside the queue. But I have no idea how to accomplish this.
My Command(message):
final class CreatePostCommand
{
protected PostDataObject $postDataObject;
public function __construct(PostDataObject $postDataObject)
{
$this->postDataObject = $postDataObject;
}
public function getPostDataObject(): PostDataObject
{
return $this->postDataObject;
}
public function setPostDataObject(PostDataObject $postDataObject): self
{
$this->postDataObject = $postDataObject;
return $this;
}
}
My PostDataObject:
class PostDataObject extends DataObject
{
public $title;
public $excerpt;
public $content;
public $author;
public $published_at;
}
There are two methods to implement
__serialize
and__unserialize
. Using them convert to/from json in format that you want: