Release Notes
Announcements
Retry Interval | Maximum Number of Retries |
5 minutes | You can modify the consumer group configuration to customize the maximum number of retries. The default is 16 times. |
{"require": {"aliyunmq/mq-http-sdk": ">=1.0.4"}}
private $client;private $producer;public function __construct(){// Obtain the client.$this->client = new MQClient(endpoint,accessKey,secretKey);$topic = topicName;$instanceId = namespace;// Obtain the producer.$this->producer = $this->client->getProducer($instanceId, $topic);}
Parameter | Description |
endpoint | Cluster access address. You can obtain the access address from the Access Information module on the Cluster Basic Information page in the console. |
accessKey | Role token. You can copy it from the AccessKey column on the Cluster Permissions page in the console. |
secretKey | Role name. You can copy the role name from the SecretKey column on the Cluster Permissions page in the console. |
namespace | Namespace name of the exclusive cluster. You can copy the namespace name from the Namespace page in the console. If you are using a 4.x general cluster (rocketmq-xxx) or a 5.x cluster (rmq-xxx), specify the cluster ID for this parameter. |
topicName | Topic name. You can copy the name from the Topic Management page in the console. |
public function run(){try{for ($i=0; $i<8; $i++){$publishMessage = new TopicMessage("hello mq!");// Set properties.$publishMessage->putProperty("a", $i);$result = $this->producer->publishMessage($publishMessage);print "Send success. msgId is:" . $result->getMessageId() . ", bodyMD5 is:" . $result->getMessageBodyMD5() . "\\n";}} catch (\\Exception $e) {print_r($e->getMessage() . "\\n");}}
private $client;private $consumer;public function __construct(){// Obtain the client.$this->client = new MQClient(endpoint,accessKey,secretKey);$topic = topicName;$groupId = groupName;$instanceId = namespace;// Obtain the consumer.$this->consumer = $this->client->getConsumer($instanceId, $topic, $groupId);}
Parameter | Description |
endpoint | Cluster access address. You can obtain the access address from the Access Information module on the Cluster Basic Information page in the console. |
accessKey | Role token. You can copy it from the AccessKey column on the Cluster Permissions page in the console. |
secretKey | Role name. You can copy the role name from the SecretKey column on the Cluster Permissions page in the console. |
namespace | Namespace name of the exclusive cluster. You can copy the namespace name from the Namespace page in the console. If you are using a 4.x general cluster (rocketmq-xxx) or a 5.x cluster (rmq-xxx), specify the cluster ID for this parameter. |
topicName | Topic name. You can copy the name from the Topic Management page in the console. |
groupName | Consumer group name. You can copy the name from the Group Management page in the console. |
public function run(){while (True) {try {// Consume messages through long round-robin scheduling.// Long round-robin scheduling means that if there are no messages in the topic, the request waits on the server side. If messages are available for consumption, they are returned immediately.// If your business is sensitive to consumption delays, it is highly recommended to pull messages concurrently.$messages = $this->consumer->consumeMessage(batchSize,waitSeconds);} catch (\\Exception $e) {if ($e instanceof MQ\\Exception\\MessageNotExistException) {printf("No message, contine long polling!RequestId:%s\\n", $e->getRequestId());continue;}print_r($e->getMessage() . "\\n");sleep(1);continue;}print "consume finish, messages:\\n";$receiptHandles = array();foreach ($messages as $message) {$receiptHandles[] = $message->getReceiptHandle();printf("MessageID:%s TAG:%s BODY:%s \\nPublishTime:%d, FirstConsumeTime:%d, \\nConsumedTimes:%d, NextConsumeTime:%d,MessageKey:%s\\n",$message->getMessageId(), $message->getMessageTag(), $message->getMessageBody(),$message->getPublishTime(), $message->getFirstConsumeTime(), $message->getConsumedTimes(), $message->getNextConsumeTime(),$message->getMessageKey());print_r($message->getProperties());// Process business logic.}print_r($receiptHandles);try {$this->consumer->ackMessage($receiptHandles);} catch (\\Exception $e) {if ($e instanceof MQ\\Exception\\AckMessageException) {printf("Ack Error, RequestId:%s\\n", $e->getRequestId());foreach ($e->getAckMessageErrorItems() as $errorItem) {printf("\\tReceiptHandle:%s, ErrorCode:%s, ErrorMsg:%s\\n", $errorItem->getReceiptHandle(), $errorItem->getErrorCode(), $errorItem->getErrorCode());}}}print "ack finish\\n";}}
Parameter | Description |
batchSize | Number of messages pulled in a single batch. It supports up to 16 messages. |
waitSeconds | Wait time in round-robin scheduling for a single pull request. It supports up to 30 seconds. |
Was this page helpful?
You can also Contact sales or Submit a Ticket for help.
Help us improve! Rate your documentation experience in 5 mins.
Feedback