<?php

declare(strict_types=1);
/**
 * This file is part of Hyperf.
 *
 * @link     https://www.hyperf.io
 * @document https://hyperf.wiki
 * @contact  group@hyperf.io
 * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
 */
use Hyperf\Amqp\IO\IOFactory;

use function Hyperf\Support\env;
// use App\Platform\OrderConsumer;

return [
    'enable' => true,
    'management' => [
        'host' => env('AMQP_HOST', 'localhost'),
        'port' => (int) env('RABBITMQ_MANAGEMENT_PORT', 15672),
        'user' => env('AMQP_ADMIN_USER', 'guest'),
        'password' => env('AMQP_ADMIN_PASSWORD', 'guest'),
    ],
    'default_producer' => [
        'host' => env('AMQP_HOST', 'localhost'),
        'port' => (int) env('AMQP_PORT', 5672),
        'user' => env('AMQP_USER', 'guest'),
        'password' => env('AMQP_PASSWORD', 'guest'),
        'vhost' => env('AMQP_VHOST', '/'),
        'open_ssl' => false,
        'concurrent' => [
            'limit' => 1,
        ],
        'pool' => [
            'connections' => 2,
        ],
        'io' => IOFactory::class,
        'params' => [
            'insist' => false,
            'login_method' => 'AMQPLAIN',
            'login_response' => null,
            'locale' => 'en_US',
            'connection_timeout' => 3,
            // Try to maintain twice value heartbeat as much as possible
            'read_write_timeout' => 6,
            'context' => null,
            'keepalive' => true,
            // Try to ensure that the consumption time of each message is less than the heartbeat time as much as possible
            'heartbeat' => 3,
            'channel_rpc_timeout' => 0.0,
            'close_on_destruct' => false,
            'max_idle_channels' => 10,
            'connection_name' => null,
        ],
    ],
    'default_consumer' => [
        'host' => env('AMQP_HOST', 'localhost'),
        'port' => (int) env('AMQP_PORT', 5672),
        'user' => 'user_datahub_consumer',
        'password' => env('MQ_PASSWORD_CONSUMER', 'password'),
        'vhost' => env('AMQP_VHOST', '/'),
        'open_ssl' => false,
        'concurrent' => [
            'limit' => 1,
        ],
        'pool' => [
            'connections' => 2,
        ],
        'io' => IOFactory::class,
        'params' => [
            'insist' => false,
            'login_method' => 'AMQPLAIN',
            'login_response' => null,
            'locale' => 'en_US',
            'connection_timeout' => 3,
            // Try to maintain twice value heartbeat as much as possible
            'read_write_timeout' => 6,
            'context' => null,
            'keepalive' => true,
            // Try to ensure that the consumption time of each message is less than the heartbeat time as much as possible
            'heartbeat' => 3,
            'channel_rpc_timeout' => 0.0,
            'close_on_destruct' => false,
            'max_idle_channels' => 10,
            'connection_name' => null,
        ],
    ],
    // consumers 配置改为使用 注解方式定义，这里仅保留注释作为备注
    // 'consumers' => [
        // Orders Consumer - Single queue for all platforms
        // [
        //     'exchange' => 'main.exchange',
        //     'routingKey' => 'order.#',
        //     'queue' => 'orders.queue',
        //     'consumer' => OrderConsumer::class,
        //     'nums' => 1,
        //     'enable' => true,
        //     'maxConsumption' => 0,
        //     'qos' => [
        //         'prefetch_size' => 0,
        //         'prefetch_count' => 100,
        //         'global' => false,
        //     ],
        // ],
        // Products Consumer - Single queue for all platforms (commented out until ProductConsumer is implemented)
        // [
        //     'exchange' => 'main.exchange',
        //     'routingKey' => 'product.#',
        //     'queue' => 'products.queue',
        //     'consumer' => ProductConsumer::class,
        //     'nums' => 1,
        //     'enable' => true,
        //     'maxConsumption' => 0,
        //     'qos' => [
        //         'prefetch_size' => 0,
        //         'prefetch_count' => 100,
        //         'global' => false,
        //     ],
        // ],
        // Refunds Consumer - Single queue for all platforms (commented out until RefundConsumer is implemented)
        // [
        //     'exchange' => 'main.exchange',
        //     'routingKey' => 'refund.#',
        //     'queue' => 'refunds.queue',
        //     'consumer' => RefundConsumer::class,
        //     'nums' => 1,
        //     'enable' => true,
        //     'maxConsumption' => 0,
        //     'qos' => [
        //         'prefetch_size' => 0,
        //         'prefetch_count' => 100,
        //         'global' => false,
        //     ],
        // ],
        // Inventory Consumer - Single queue for all platforms (commented out until InventoryConsumer is implemented)
        // [
        //     'exchange' => 'main.exchange',
        //     'routingKey' => 'inventory.#',
        //     'queue' => 'inventory.queue',
        //     'consumer' => InventoryConsumer::class,
        //     'nums' => 1,
        //     'enable' => true,
        //     'maxConsumption' => 0,
        //     'qos' => [
        //         'prefetch_size' => 0,
        //         'prefetch_count' => 100,
        //         'global' => false,
        //     ],
        // ],
    // ],
];