RabbitmqTestController.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace console\controllers;
  3. use yii\console\Controller;
  4. class RabbitmqTestController extends Controller
  5. {
  6. /**
  7. * 消息生产者
  8. * @param $producerName 生产者名称 (producer.name) -- 从 config/rabbitmq.php 找
  9. * @param $exchangeName 交换器名称 (exchanges.name)
  10. * @param $routingKey 绑定路由键(bindings.routing_keys)
  11. * @param $status 模拟执行状态 -- 200:成功 500:失败
  12. *
  13. * 例子:
  14. * ./yii rabbitmq-test/publish
  15. * ./yii rabbitmq-test/publish producer_2 ex_1 route_1
  16. * ./yii rabbitmq-test/publish producer_1 topic_ex_1 route_prefix.*
  17. * ./yii rabbitmq-test/publish producer_1 topic_ex_1 *.route_suffix
  18. */
  19. public function actionPublish($producerName = '', $exchangeName = '', $routingKey = '', $status = 200)
  20. {
  21. if(empty($producerName)){
  22. $producerName = 'producer_1';
  23. }
  24. if(empty($exchangeName)){
  25. $exchangeName = 'ex_1';
  26. }
  27. if(empty($routingKey)){
  28. $routingKey = 'route_1';
  29. }
  30. $producer = \Yii::$app->rabbitmq->getProducer($producerName);
  31. $data = ['id' => 123, 'status' => $status, ['producer'=>$producerName, 'exchange'=>$exchangeName, 'routingKey'=>$routingKey]];
  32. $msg = serialize($data);
  33. $producer->publish($msg, $exchangeName, $routingKey);
  34. }
  35. public function actionPublishtopic()
  36. {
  37. }
  38. }