当前位置:   article > 正文

同一局域网下 RabbitMQ发布消息_rabbitmq局域网访问

rabbitmq局域网访问

1.发布消息 

  1. <?php
  2. namespace Mobile\Controller;
  3. use Think\Controller;
  4. class TestController extends Controller {
  5. /**
  6. * 同一局域网下 RabbitMQ发布消息
  7. */
  8. public function rabbit_1(){
  9. //配置信息
  10. $conn_args = [
  11. 'host' => '192.168.0.103',//局域网下的另一台主机地址
  12. 'port' => '5672',//端口号
  13. 'login' => 'admin',//新建用户admin,(默认的guest用户只能用作本地登录)
  14. 'password' => 'admin',//密码
  15. 'vhost'=>'admin',//admin绑定的虚拟主机
  16. ];
  17. //创建连接
  18. $conn = new \AMQPConnection($conn_args);
  19. if (!$conn->connect()) {
  20. echo "content error";
  21. }
  22. //AMQ通道
  23. $channel = new \AMQPChannel($conn);
  24. //创建交换机对象
  25. $ex = new \AMQPExchange($channel);
  26. $e_name = 'admin'; //交换机名 - 名字随意
  27. $ex->setName($e_name);
  28. //发送消息
  29. $key = rand(1,1000);
  30. $k_route = 'answer_list'; //路由key - 名字随意
  31. $ex->publish('test_list_'.$key, $k_route);
  32. //断开连接
  33. $conn->disconnect();
  34. echo $key;
  35. }
  36. }

2.接收消息 

  1. <?php
  2. //配置信息
  3. $conn_args = [
  4. 'host' => '192.168.0.103',//局域网下的另一台主机地址
  5. 'port' => '5672',//端口号
  6. 'login' => 'admin',//新建用户admin,默认的guest不能使用
  7. 'password' => 'admin',//密码
  8. 'vhost'=>'admin',//admin绑定的虚拟主机
  9. ];
  10. //创建连接和channel
  11. $conn = new AMQPConnection($conn_args);
  12. if (!$conn->connect()) {
  13. die("content error".PHP_EOL);
  14. }
  15. //AMQ通道
  16. $channel = new AMQPChannel($conn);
  17. //创建交换机
  18. $ex = new AMQPExchange($channel);
  19. $e_name = 'admin'; //交换机名 取用发布消息时,创建交换机对象时设置的名字
  20. $ex->setName($e_name);
  21. $ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型
  22. $ex->setFlags(AMQP_DURABLE); //持久化
  23. echo "Exchange Status:".$ex->declare().PHP_EOL;
  24. //创建队列
  25. $q = new AMQPQueue($channel);
  26. $q->setFlags(AMQP_DURABLE); //持久化
  27. echo "Message Total:".$q->declare().PHP_EOL;
  28. //绑定交换机与队列,并指定路由键
  29. $k_route = 'answer_list';//路由key
  30. echo 'Queue Bind: '.$q->bind($e_name, $k_route).PHP_EOL;
  31. //阻塞模式接收消息
  32. echo "Message:\n";
  33. while(true){
  34. $q->consume('processMessage');
  35. $q->consume('processMessage', AMQP_AUTOACK); //自动ACK应答
  36. }
  37. $conn->disconnect();
  38. /**
  39. * 消费回调函数
  40. * 处理消息
  41. */
  42. function processMessage($envelope, $queue) {
  43. $msg = $envelope->getBody();
  44. echo $msg.PHP_EOL; //处理消息
  45. $queue->ack($envelope->getDeliveryTag()); //手动发送ACK应答
  46. }
  47. ?>

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/558160
推荐阅读
相关标签
  

闽ICP备14008679号