mineadmin使用docker连接rabbitmq

先上配置文件  docker-compose.yml

version: "3"
services:
  mine_develop:
    container_name: mine_develop
    hostname: mine_develop
    image: hyperf/hyperf:8.0-alpine-v3.12-swoole
    volumes:
      - ./:/app-src/
    ports:
      - 19551:9501
      - 19552:9502
      - 19553:9503
    restart: on-failure
    environment:
      - APP_ENV=dev  #节点名称
      - APP_NAME=MineAdmin #节点名称
      - APP_VERSION=1.0 #节点版本
      - APP_DEBUG=true #节点是否debug模式
      - APP_NODE=NODE1 #节点url
    network_mode: bridge
    # entrypoint: ["php", "bin/hyperf.php", "start"]
    links:
      - mine_develop_db
      - mine_develop_redis
    command:
      - bash
      - -c
      - |
        php -v
        php --ri swoole
        php -m
        cd /app-src
        composer install -o
        composer dump-autoload -o
        rm -rf runtime/container
        php bin/hyperf.php server:watch
  mine_develop_redis:
    container_name: mine_develop_redis
    hostname: mine_develop_redis
    image: redis:latest
    env_file: env.cnf
    ports:
      - 16398:6379
    volumes:
      - "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro"
    restart: always
    network_mode: bridge
  mine_develop_db:
    container_name: mine_develop_db
    hostname: mine_develop_db
    image: mysql:5.7
    env_file: env.cnf
    volumes:
      - "./data/mysql:/var/lib/mysql:rw"
      - "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro"
    ports:
      - 13309:3306
    restart: always
    command: --default-authentication-plugin=mysql_native_password --skip-external-locking
    network_mode: bridge
  mine_develop_rabbit:
     container_name: mine_develop_rabbit
     hostname: mine_develop_rabbit
     image: rabbitmq:management
     env_file: env.rabbit   #配置文件
     volumes:
       - "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro"
     ports:
       - 15677:15672
       - 25657:5672
       - 34677:25672
       - 41617:61613
       - 4887:1883
     restart: always
     network_mode: bridge

.env 文件

APP_NAME=skeleton
APP_ENV=dev

DB_DRIVER=mysql
DB_HOST=mine_develop_db
DB_PORT=3306
DB_DATABASE=mine
DB_USERNAME=root
DB_PASSWORD=123456
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
DB_PREFIX=

REDIS_HOST=mine_develop_redis
REDIS_AUTH=
REDIS_PORT=6379
REDIS_DB=0

AMQP_HOST = mine_develop_rabbit
AMQP_PORT = 5672
AMQP_USER = lxfb
AMQP_PASSWORD = aw123456
AMQP_VHOST = /
AMQP_ENABLE = true

SUPER_ADMIN = 1000
ADMIN_ROLE = 1000
CONSOLE_SQL = true
JWT_SECRET="i1XHbusuPRnYmeQ0SNDumOu4YBLzsf/VhGjEojhnH+HY2WJ4c6rc6IwTXSe4ZYNZSdlobojRsMnA2PFwKDiC5Q=="
JWT_API_SECRET="pMr2XY2v7Gaq+AO+7Q4J09QkfaFg7o3J5Pp8ivGHTInXxrjA3arbJwEST5DIJmCezLKOMKL+wFASNhK9Gf4D1Q=="
mine_develop_rabbit是容器名

接着打开并且进入rabbitmq容器

依次执行以下命令

rabbitmqctl add_user lxfb aw123456  #创建rabbitmq用户   
rabbitmqctl set_user_tags lxfb administrator #赋予管理员权限   
rabbitmqctl  set_permissions -p / lxfb '.*' '.*' '.*'  #后台访问权限

重启容器

网址访问

http://127.0.0.1:15672

账号密码则是设置的 lxf 123456

 环境配置完成

然后打开mineadmin项目文件

路径  App\System\Queue\Consumer

文件改成

<?php

declare(strict_types=1);

namespace App\System\Queue\Consumer;

use Hyperf\Amqp\Result;
use Hyperf\Amqp\Annotation\Consumer;
use Hyperf\Amqp\Message\ConsumerMessage;
use PhpAmqpLib\Message\AMQPMessage;

/**
 * 后台内部消息队列消费处理
 * @Consumer(exchange="mineadmin", routingKey= "message.routing", queue= "message.queue", name= "message.queue", nums= 1)
 */
class MessageConsumer extends ConsumerMessage
{
    /**
     * @param $data
     * @param AMQPMessage $message
     * @return string
     */
    public function consumeMessage($data, AMQPMessage $message): string
    {
        return parent::consumeMessage($data, $message);
    }

    public function consume($data): string
    {
        return empty($data) ? Result::DROP : Result::ACK;
    }

    /**
     * 设置是否启动amqp
     * @return bool
     */
    public function isEnable(): bool
    {
        return env('AMQP_ENABLE', false);
    }
}

路径 App\System\Queue\Producer

文件改成

<?php

declare(strict_types=1);

namespace App\System\Queue\Producer;

use Hyperf\Amqp\Annotation\Producer;
use Hyperf\Amqp\Message\ProducerMessage;

/**
 * 后台内部消息队列生产处理
 * @Producer(exchange="mineadmin", routingKey="message.routing")
 */
class MessageProducer extends ProducerMessage
{
    /**
     * @throws \Psr\Container\ContainerExceptionInterface
     * @throws \Psr\Container\NotFoundExceptionInterface
     */
    public function __construct($data)
    {
        console()->info(
            sprintf(
                'MineAdmin created queue message time at: %s, data is: %s',
                date('Y-m-d H:i:s'),
                (is_array($data) || is_object($data)) ? json_encode($data) : $data
            )
        );

        $this->payload = $data;
    }
}

剩下的登陆后台发送消息就行.

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值