<?php | |
/** | |
* Licensed to the Apache Software Foundation (ASF) under one or more | |
* contributor license agreements. See the NOTICE file distributed with | |
* this work for additional information regarding copyright ownership. | |
* The ASF licenses this file to You under the Apache License, Version 2.0 | |
* (the "License"); you may not use this file except in compliance with | |
* the License. You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
namespace Apache\Rocketmq; | |
require 'vendor/autoload.php'; | |
use Apache\Rocketmq\V2\MessageQueue; | |
use Apache\Rocketmq\V2\MessagingServiceClient; | |
use Apache\Rocketmq\V2\QueryRouteRequest; | |
use Apache\Rocketmq\V2\ReceiveMessageRequest; | |
use Apache\Rocketmq\V2\Resource; | |
use Grpc\ChannelCredentials; | |
use const Grpc\STATUS_OK; | |
class Producer | |
{ | |
public function init() | |
{ | |
/** | |
* Client ID is currently concatenated using a fixed host name to | |
* facilitate code debugging. | |
*/ | |
$clientId = 'missyourlove' . '@' . posix_getpid() . '@' . rand(0, 10) . '@' . $this->getRandStr(10); | |
$client = new MessagingServiceClient('rmq-cn-cs02xhf2k01.cn-hangzhou.rmq.aliyuncs.com:8080', [ | |
'credentials' => ChannelCredentials::createInsecure(), | |
'update_metadata' => function ($metaData) use ($clientId) { | |
$metaData['headers'] = ['clientID' => $clientId]; // Pass the ClientID to the server through the header | |
return $metaData; | |
} | |
]); | |
$qr = new QueryRouteRequest(); | |
$rs = new Resource(); | |
$rs->setResourceNamespace(''); | |
$rs->setName('normal_topic'); | |
$qr->setTopic($rs); | |
$status = $client->QueryRoute($qr)->wait(); | |
var_dump($status); // This prints out the response data returned by the server | |
} | |
public function getRandStr($length){ | |
//Character combinations | |
$str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; | |
$len = strlen($str)-1; | |
$randstr = ''; | |
for ($i=0;$i<$length;$i++) { | |
$num=mt_rand(0,$len); | |
$randstr .= $str[$num]; | |
} | |
return $randstr; | |
} | |
} | |
$xx = new Producer(); | |
$xx->init(); |