Cara menggunakan perkhidmatan mikro PHP untuk melaksanakan komunikasi mesej teragih dan menolak
Dengan perkembangan Internet, seni bina teragih telah menjadi trend penting dalam pembangunan perisian moden. Dalam seni bina teragih, perkhidmatan mikro ialah corak seni bina popular yang membahagikan aplikasi besar kepada berbilang unit perkhidmatan kecil dan autonomi. Kerjasama dan interaksi dicapai melalui komunikasi mesej antara perkhidmatan mikro ini.
Artikel ini akan memperkenalkan cara menggunakan perkhidmatan mikro PHP untuk melaksanakan komunikasi dan tolak mesej yang diedarkan, serta memberikan contoh kod khusus.
Mula-mula, buat projek PHP baharu. Katakan projek kami dipanggil "perkhidmatan mesej". Jalankan arahan berikut dalam baris arahan:
mkdir message-service cd message-service composer init
Isi maklumat projek mengikut arahan baris arahan, dan tambah kandungan berikut pada composer.json
yang dihasilkan: composer.json
中添加以下内容:
{ "require": { "enqueue/enqueue": "^0.9.18", "enqueue/elasticsearch": "^0.9.7", "enqueue/mongodb": "^0.9.16", "enqueue/redis": "^0.9.19", "enqueue/stomp": "^0.9.16", "enqueue/zmq": "^0.9.13", "enqueue/gearman": "^0.9.11" }, "autoload": { "psr-4": { "MessageService\": "src/" } } }
然后执行以下命令安装所需的依赖库:
composer install
在分布式系统中,消息中间件扮演着关键的角色,它负责处理微服务之间的消息传递和通信。我们可以选择不同的消息中间件,如RabbitMQ、Kafka等。这里我们以RabbitMQ为例。
在message-service
根目录下创建一个名为config
的目录,并在该目录下创建rabbitmq.php
文件。在该文件中,添加以下代码:
<?php return [ 'connections' => [ 'default' => [ 'host' => 'localhost', 'port' => 5672, 'user' => 'guest', 'pass' => 'guest', 'vhost' => '/', ], ], ];
创建一个名为Producer.php
的文件,代码如下:
<?php namespace MessageService; use EnqueueAmqpLibAmqpConnectionFactory; use EnqueueMessagesValidatorTrait; use InteropAmqpAmqpContext; use InteropAmqpAmqpMessage; class Producer { use MessagesValidatorTrait; private $context; public function __construct() { $config = include 'config/rabbitmq.php'; $connectionFactory = new AmqpConnectionFactory($config['connections']['default']); $this->context = $connectionFactory->createContext(); } public function publish(string $message): void { $this->assertMessageValid($message); $message = $this->context->createMessage($message); $this->context->createProducer()->send($message); echo 'Message published: ' . $message->getBody() . PHP_EOL; } }
创建一个名为Consumer.php
的文件,代码如下:
<?php namespace MessageService; use EnqueueAmqpLibAmqpConnectionFactory; use InteropAmqpAmqpContext; use InteropAmqpAmqpMessage; class Consumer { private $context; public function __construct() { $config = include 'config/rabbitmq.php'; $connectionFactory = new AmqpConnectionFactory($config['connections']['default']); $this->context = $connectionFactory->createContext(); } public function consume(): void { $this->context->declareQueue($this->context->createQueue('message_queue')); $consumer = $this->context->createConsumer($this->context->createQueue('message_queue')); while (true) { if ($message = $consumer->receive(3000)) { echo 'Received message: ' . $message->getBody() . PHP_EOL; $consumer->acknowledge($message); } } } }
在index.php
文件中,我们可以使用生产者和消费者来发送和接收消息。代码如下:
<?php require __DIR__ . '/vendor/autoload.php'; use MessageServiceProducer; use MessageServiceConsumer; $producer = new Producer(); $producer->publish('Hello, World!'); $consumer = new Consumer(); $consumer->consume();
运行index.php
rrreee
rrreee
config
dalam direktori root message-service
dan buat fail rabbitmq.php
dalam direktori ini. Dalam fail ini, tambahkan kod berikut: 🎜rrreeeProducer.php
dengan kod berikut: 🎜rrreee🎜Buat pengguna mesej🎜🎜🎜Buat fail bernama Consumer.php
dengan kod berikut: 🎜rrreeeindex.php
, kami boleh menggunakan pengeluar dan pengguna untuk menghantar dan menerima mesej. Kodnya adalah seperti berikut: 🎜rrreee🎜Jalankan skrip index.php
dan anda akan melihat mesej yang digunakan untuk ujian dihantar dan diterima. 🎜🎜Setakat ini, kami telah melaksanakan komunikasi mesej yang diedarkan perkhidmatan mikro dan menolak berdasarkan PHP. Anda boleh melanjutkan dan menyesuaikan seni bina ini untuk melaksanakan fungsi yang lebih kompleks mengikut keperluan perniagaan anda. 🎜Atas ialah kandungan terperinci Cara menggunakan perkhidmatan mikro PHP untuk melaksanakan komunikasi mesej yang diedarkan dan menolak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!