publish发布(生产者)
<?php
$queue = 'time1';
$msg = 'bar';
//生产者
try {
$stomp = new Stomp('tcp://localhost:61613');
while (true) {
$stomp->send($queue, $msg." ". date("Y-m-d H:i:s"));
sleep(1);
}
} catch(StompException $e) {
die('Connection failed: ' . $e->getMessage());
}
subscribe订阅(消费者)
<?php
$queue = 'time1';
try {
$stomp = new Stomp('tcp://localhost:61613');
$stomp->subscribe($queue);
while (true) {
if ($stomp->hasFrame()) {
$frame = $stomp->readFrame();
if ($frame != NULL) {
print "Received: " . $frame->body . " - time now is " . date("Y-m-d H:i:s"). "\n";
$stomp->ack($frame); //确认接收到消息
}
} else {
print "No frames to read\n";
}
}
} catch(\Exception $e) {
die('Connection failed: ' . $e->getMessage());
}
消费者可以有多个(stomp没有java的jms强大)
图片显示接受的分布的非常均匀。
注意事项:
1、用stomp扩展存入的消息队列先行开启后,在开启消费者所有数据都能取出来。
2、用stomp扩展可以一对一收发(一个生产者一个消费者、一个队列),也可以一对多(一个生产者多个消费者、一个队列)、以上的图片就是一对多。