# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: RabbitMQ with Delayed Message Exchange
spec:
    description: |
        RabbitMQ message broker with the delayed message exchange plugin enabled.
        This allows you to schedule message delivery with a delay.
    icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/rabbitmq.svg
    variables:
        - key: RABBITMQ_DEFAULT_USER
          type: STRING
          name: Default User
          description: Username for RabbitMQ management console
        - key: RABBITMQ_DEFAULT_PASS
          type: STRING
          name: Default Password
          description: Password for RabbitMQ management console
    tags:
        - Message Queue
        - Messaging
    readme: |
        # RabbitMQ with Delayed Message Exchange

        This template deploys RabbitMQ with the `rabbitmq_delayed_message_exchange` plugin enabled.

        ## Features

        - **Message Broker**: Full-featured RabbitMQ message broker
        - **Delayed Messages**: Schedule message delivery with configurable delays
        - **Management Console**: Web-based management UI at port 15672
        - **AMQP Protocol**: Standard AMQP 0-9-1 protocol support

        ## Getting Started

        1. After deployment, access the management console at `http://<service-url>:15672`
        2. Log in with the credentials you provided
        3. Create exchanges, queues, and bindings as needed

        ## Using Delayed Messages

        To use the delayed message exchange plugin:

        1. Create an exchange with type `x-delayed-message`
        2. Set the `x-delayed-type` argument to the underlying exchange type (e.g., `direct`, `topic`)
        3. Publish messages with the `x-delay` header (in milliseconds)

        Example (Python):
        ```python
        import pika
        import json

        connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
        channel = connection.channel()

        # Declare delayed exchange
        channel.exchange_declare(
            exchange='delayed_exchange',
            exchange_type='x-delayed-message',
            arguments={'x-delayed-type': 'direct'}
        )

        # Publish with 5 second delay
        channel.basic_publish(
            exchange='delayed_exchange',
            routing_key='my_queue',
            body=json.dumps({'message': 'Hello'}),
            properties=pika.BasicProperties(
                headers={'x-delay': 5000}  # 5000 milliseconds
            )
        )
        ```

        ## Ports

        - **5672**: AMQP protocol (for client connections)
        - **15672**: Management console (HTTP)

        ## Important Notes

        - The delayed message exchange plugin is experimental and not recommended for production use at scale
        - For large-scale delayed message processing, consider using Dead Letter Queues with TTL or external scheduling systems
        - Data is persisted in the mounted volume

        ## License

        RabbitMQ is licensed under the Mozilla Public License 2.0. See https://github.com/rabbitmq/rabbitmq-server for details.
    services:
        - name: rabbitmq
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/rabbitmq.svg
          template: PREBUILT_V2
          spec:
            id: rabbitmq
            source:
                image: heidiks/rabbitmq-delayed-message-exchange:latest
            ports:
                - id: amqp
                  port: 5672
                  type: TCP
                - id: management
                  port: 15672
                  type: HTTP
            volumes:
                - id: data
                  dir: /var/lib/rabbitmq
            env:
                RABBITMQ_DEFAULT_PASS:
                    default: ${RABBITMQ_DEFAULT_PASS}
                    expose: true
                RABBITMQ_DEFAULT_USER:
                    default: ${RABBITMQ_DEFAULT_USER}
                    expose: true
            portForwarding:
                enabled: true
localization:
    es-ES:
        description: |
            Agente de mensajes RabbitMQ con el complemento de intercambio de mensajes retrasados habilitado.
            Esto le permite programar la entrega de mensajes con un retraso configurable.
        variables:
            - key: RABBITMQ_DEFAULT_USER
              type: STRING
              name: Usuario Predeterminado
              description: Nombre de usuario para la consola de administración de RabbitMQ
            - key: RABBITMQ_DEFAULT_PASS
              type: STRING
              name: Contraseña Predeterminada
              description: Contraseña para la consola de administración de RabbitMQ
        readme: |
            # RabbitMQ con Intercambio de Mensajes Retrasados

            Esta plantilla implementa RabbitMQ con el complemento `rabbitmq_delayed_message_exchange` habilitado.

            ## Características

            - **Agente de Mensajes**: Agente de mensajes RabbitMQ completo
            - **Mensajes Retrasados**: Programe la entrega de mensajes con retrasos configurables
            - **Consola de Administración**: Interfaz de administración basada en web en el puerto 15672
            - **Protocolo AMQP**: Soporte del protocolo AMQP 0-9-1 estándar

            ## Primeros Pasos

            1. Después de la implementación, acceda a la consola de administración en `http://<service-url>:15672`
            2. Inicie sesión con las credenciales que proporcionó
            3. Cree intercambios, colas y enlaces según sea necesario

            ## Uso de Mensajes Retrasados

            Para usar el complemento de intercambio de mensajes retrasados:

            1. Cree un intercambio con tipo `x-delayed-message`
            2. Establezca el argumento `x-delayed-type` en el tipo de intercambio subyacente (por ejemplo, `direct`, `topic`)
            3. Publique mensajes con el encabezado `x-delay` (en milisegundos)

            ## Puertos

            - **5672**: Protocolo AMQP (para conexiones de clientes)
            - **15672**: Consola de administración (HTTP)

            ## Notas Importantes

            - El complemento de intercambio de mensajes retrasados es experimental y no se recomienda para uso en producción a gran escala
            - Para el procesamiento de mensajes retrasados a gran escala, considere usar colas de letras muertas con TTL o sistemas de programación externos
            - Los datos se conservan en el volumen montado

            ## Licencia

            RabbitMQ está licenciado bajo la Licencia Pública de Mozilla 2.0. Consulte https://github.com/rabbitmq/rabbitmq-server para más detalles.
    id-ID:
        description: |
            Broker pesan RabbitMQ dengan plugin pertukaran pesan tertunda diaktifkan.
            Ini memungkinkan Anda menjadwalkan pengiriman pesan dengan penundaan yang dapat dikonfigurasi.
        variables:
            - key: RABBITMQ_DEFAULT_USER
              type: STRING
              name: Pengguna Default
              description: Nama pengguna untuk konsol manajemen RabbitMQ
            - key: RABBITMQ_DEFAULT_PASS
              type: STRING
              name: Kata Sandi Default
              description: Kata sandi untuk konsol manajemen RabbitMQ
        readme: |
            # RabbitMQ dengan Pertukaran Pesan Tertunda

            Template ini menerapkan RabbitMQ dengan plugin `rabbitmq_delayed_message_exchange` diaktifkan.

            ## Fitur

            - **Broker Pesan**: Broker pesan RabbitMQ lengkap
            - **Pesan Tertunda**: Jadwalkan pengiriman pesan dengan penundaan yang dapat dikonfigurasi
            - **Konsol Manajemen**: Antarmuka manajemen berbasis web di port 15672
            - **Protokol AMQP**: Dukungan protokol AMQP 0-9-1 standar

            ## Memulai

            1. Setelah penerapan, akses konsol manajemen di `http://<service-url>:15672`
            2. Masuk dengan kredensial yang Anda berikan
            3. Buat pertukaran, antrian, dan pengikatan sesuai kebutuhan

            ## Menggunakan Pesan Tertunda

            Untuk menggunakan plugin pertukaran pesan tertunda:

            1. Buat pertukaran dengan tipe `x-delayed-message`
            2. Atur argumen `x-delayed-type` ke tipe pertukaran yang mendasar (misalnya, `direct`, `topic`)
            3. Publikasikan pesan dengan header `x-delay` (dalam milidetik)

            ## Port

            - **5672**: Protokol AMQP (untuk koneksi klien)
            - **15672**: Konsol manajemen (HTTP)

            ## Catatan Penting

            - Plugin pertukaran pesan tertunda bersifat eksperimental dan tidak direkomendasikan untuk penggunaan produksi skala besar
            - Untuk pemrosesan pesan tertunda skala besar, pertimbangkan menggunakan Antrian Surat Mati dengan TTL atau sistem penjadwalan eksternal
            - Data disimpan di volume yang dipasang

            ## Lisensi

            RabbitMQ dilisensikan di bawah Mozilla Public License 2.0. Lihat https://github.com/rabbitmq/rabbitmq-server untuk detail.
    ja-JP:
        description: |
            遅延メッセージ交換プラグインが有効になっているRabbitMQメッセージブローカー。
            これにより、設定可能な遅延でメッセージ配信をスケジュールできます。
        variables:
            - key: RABBITMQ_DEFAULT_USER
              type: STRING
              name: デフォルトユーザー
              description: RabbitMQ管理コンソールのユーザー名
            - key: RABBITMQ_DEFAULT_PASS
              type: STRING
              name: デフォルトパスワード
              description: RabbitMQ管理コンソールのパスワード
        readme: |
            # RabbitMQ 遅延メッセージ交換

            このテンプレートは、`rabbitmq_delayed_message_exchange` プラグインが有効になっているRabbitMQをデプロイします。

            ## 機能

            - **メッセージブローカー**：フル機能のRabbitMQメッセージブローカー
            - **遅延メッセージ**：設定可能な遅延でメッセージ配信をスケジュール
            - **管理コンソール**：ポート15672のWebベース管理UI
            - **AMQPプロトコル**：標準AMQP 0-9-1プロトコルサポート

            ## 開始方法

            1. デプロイ後、`http://<service-url>:15672` で管理コンソールにアクセス
            2. 提供した認証情報でログイン
            3. 必要に応じて交換、キュー、バインディングを作成

            ## 遅延メッセージの使用

            遅延メッセージ交換プラグインを使用するには：

            1. タイプが `x-delayed-message` の交換を作成
            2. `x-delayed-type` 引数を基本交換タイプ（例：`direct`、`topic`）に設定
            3. `x-delay` ヘッダー付きでメッセージを発行（ミリ秒単位）

            ## ポート

            - **5672**：AMQPプロトコル（クライアント接続用）
            - **15672**：管理コンソール（HTTP）

            ## 重要な注意事項

            - 遅延メッセージ交換プラグインは実験的であり、大規模な本番環境での使用は推奨されません
            - 大規模な遅延メッセージ処理の場合は、TTL付きのデッドレターキューまたは外部スケジューリングシステムの使用を検討してください
            - データはマウントされたボリュームに保持されます

            ## ライセンス

            RabbitMQはMozilla Public License 2.0の下でライセンスされています。詳細は https://github.com/rabbitmq/rabbitmq-server を参照してください。
    zh-CN:
        description: |
            RabbitMQ 消息代理，已启用延迟消息交换插件。
            这允许你使用可配置的延迟来调度消息传递。
        variables:
            - key: RABBITMQ_DEFAULT_USER
              type: STRING
              name: 默认用户
              description: RabbitMQ 管理控制台的用户名
            - key: RABBITMQ_DEFAULT_PASS
              type: STRING
              name: 默认密码
              description: RabbitMQ 管理控制台的密码
        readme: |
            # RabbitMQ 延迟消息交换

            此模板部署启用了 `rabbitmq_delayed_message_exchange` 插件的 RabbitMQ。

            ## 功能

            - **消息代理**：功能完整的 RabbitMQ 消息代理
            - **延迟消息**：使用可配置的延迟调度消息传递
            - **管理控制台**：端口 15672 上的网页管理界面
            - **AMQP 协议**：标准 AMQP 0-9-1 协议支持

            ## 开始使用

            1. 部署后，在 `http://<service-url>:15672` 访问管理控制台
            2. 使用你提供的凭证登录
            3. 根据需要创建交换、队列和绑定

            ## 使用延迟消息

            要使用延迟消息交换插件：

            1. 创建类型为 `x-delayed-message` 的交换
            2. 设置 `x-delayed-type` 参数为基础交换类型（例如 `direct`、`topic`）
            3. 发布带有 `x-delay` 标头的消息（以毫秒为单位）

            ## 端口

            - **5672**：AMQP 协议（用于客户端连接）
            - **15672**：管理控制台（HTTP）

            ## 重要注意事项

            - 延迟消息交换插件是实验性的，不建议在大规模生产环境中使用
            - 对于大规模延迟消息处理，请考虑使用具有 TTL 的死信队列或外部调度系统
            - 数据会保存在挂载的磁盘中

            ## 许可证

            RabbitMQ 采用 Mozilla Public License 2.0 许可证。详见 https://github.com/rabbitmq/rabbitmq-server
    zh-TW:
        description: |
            RabbitMQ 訊息代理，已啟用延遲訊息交換外掛。
            這允許你使用可配置的延遲來排程訊息傳遞。
        variables:
            - key: RABBITMQ_DEFAULT_USER
              type: STRING
              name: 預設使用者
              description: RabbitMQ 管理控制台的使用者名稱
            - key: RABBITMQ_DEFAULT_PASS
              type: STRING
              name: 預設密碼
              description: RabbitMQ 管理控制台的密碼
        readme: |
            # RabbitMQ 延遲訊息交換

            此模板部署啟用了 `rabbitmq_delayed_message_exchange` 外掛的 RabbitMQ。

            ## 功能

            - **訊息代理**：功能完整的 RabbitMQ 訊息代理
            - **延遲訊息**：使用可配置的延遲排程訊息傳遞
            - **管理控制台**：埠 15672 上的網頁管理介面
            - **AMQP 協議**：標準 AMQP 0-9-1 協議支援

            ## 開始使用

            1. 部署後，在 `http://<service-url>:15672` 存取管理控制台
            2. 使用你提供的認證資訊登入
            3. 根據需要建立交換、佇列和繫結

            ## 使用延遲訊息

            要使用延遲訊息交換外掛：

            1. 建立類型為 `x-delayed-message` 的交換
            2. 設定 `x-delayed-type` 引數為基礎交換類型（例如 `direct`、`topic`）
            3. 發佈帶有 `x-delay` 標頭的訊息（以毫秒為單位）

            ## 埠號

            - **5672**：AMQP 協議（用於用戶端連線）
            - **15672**：管理控制台（HTTP）

            ## 重要注意事項

            - 延遲訊息交換外掛是實驗性的，不建議在大規模生產環境中使用
            - 對於大規模延遲訊息處理，請考慮使用具有 TTL 的死信佇列或外部排程系統
            - 資料會保存在掛載的磁碟中

            ## 授權

            RabbitMQ 採用 Mozilla Public License 2.0 授權。詳見 https://github.com/rabbitmq/rabbitmq-server
