1. Go to this page and download the library: Download smskin/laravel-service-bus library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
smskin / laravel-service-bus example snippets
namespace App\Modules\ServiceBus\Packages;
use App\Modules\ServiceBus\Enums\Packages;
use App\Modules\ServiceBus\Packages\Messages\TestMessage;
use App\Modules\ServiceBus\Packages\Processors\TestMessageProcessor;
use SMSkin\ServiceBus\Packages\BasePackage;
class TestMessagePackage extends BasePackage
{
public function package(): string
{
return Packages::TEST_SYNC;
}
protected function messageClass(): string
{
return TestMessage::class;
}
public function getProcessorClass(): string
{
return TestMessageProcessor::class;
}
}
namespace App\Modules\ServiceBus\Packages\Processors;
use App\Modules\ServiceBus\Packages\TestMessagePackage;
use Illuminate\Support\Facades\Log;
use SMSkin\ServiceBus\Packages\BasePackage;
use SMSkin\ServiceBus\Packages\Processors\BaseProcessor;
class TestMessageProcessor extends BaseProcessor
{
public function __construct(protected TestMessagePackage|BasePackage $package)
{
parent::__construct($package);
}
public function execute(): ?BasePackage
{
Log::debug('Received package', $this->package->toArray());
return null;
}
}
namespace App\Modules\ServiceBus\Packages\Messages;
use SMSkin\ServiceBus\Packages\Messages\BaseMessage;
class TestMessage extends BaseMessage
{
public string $name;
public function fromArray(array $data): static
{
$this->name = $data['name'];
return $this;
}
public function toArray(): array
{
return [
'name' => $this->name
];
}
/**
* @param string $name
* @return TestMessage
*/
public function setName(string $name): TestMessage
{
$this->name = $name;
return $this;
}
}
namespace App\Modules\ServiceBus\Enums;
use App\Modules\ServiceBus\Packages\TestMessagePackage;
use Illuminate\Support\Collection;
use SMSkin\ServiceBus\Enums\Models\PackageItem;
class Packages extends \SMSkin\ServiceBus\Enums\Packages
{
public const TEST_ASYNC_LOCAL = 'TEST_ASYNC_LOCAL';
/**
* @return Collection<PackageItem>
*/
protected static function getItems(): Collection
{
return parent::getItems()->merge([
(new PackageItem)
->setId(self::TEST_ASYNC_LOCAL)
->setClass(TestMessagePackage::class)
]);
}
}
$result = (new ServiceBus)->syncPublish(
(new SyncPublishRequest)
->setHost(Hosts::LOCALHOST)
->setPackage((new TestSyncMessagePackage)
->setMessageType(Packages::TEST_ASYNC_LOCAL)
->setMessageId(Str::uuid()->toString())
->setCorrelationId(Str::uuid()->toString())
->setSentTime(now())
->setMessage(
(new TestMessage)
->setString1('a1')
->setString2('b2')
))
);
dd($result);
(new ServiceBus)->asyncPublish(
(new AsyncPublishRequest)
->setPublisher(\App\Modules\ServiceBus\Enums\Publishers::TEST_LOCAL)
->setRoutingKey('*')
->setPackage(
(new TestMessagePackage())
->setPackage(\App\Modules\ServiceBus\Enums\Packages::TEST_ASYNC_LOCAL)
->setMessageId(Str::uuid()->toString())
->setCorrelationId(Str::uuid()->toString())
->setSentTime(now())
->setMessage(
(new \App\Modules\ServiceBus\Packages\Messages\TestMessage())
->setName('Sergey')
)
)
->setProperties([
'priority' => 0
])
);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.