Skip to main content

Availability

This guide covers configuring Tyk AI Studio to use NATS JetStream as the message queue backend for distributed deployments and high availability scenarios.

Overview

Tyk AI Studio supports two queue implementations:
  • In-Memory Queue (default): For single-instance deployments
  • NATS JetStream Queue: For distributed, persistent message handling
NATS JetStream provides:
  • Persistent Message Storage: Messages survive server restarts
  • Distributed Architecture: Scale across multiple instances
  • Automatic Reconnection: Handle network disruptions gracefully
  • Message Deduplication: Ensure exactly-once delivery
  • Authentication & Security: Multiple authentication methods including JWT and TLS

Configuration Options

Tyk AI Studio can be configured to use NATS JetStream by setting the appropriate environment variables.

Basic Configuration

Enable NATS Queue

Set the queue type to NATS in your environment configuration:

NATS Server Configuration

Advanced Configuration

Custom Stream Configuration

For advanced use cases, configure streams directly in NATS:

High Availability Setup

For production HA deployments:
This configuration ensures message delivery even if individual NATS servers fail.

Authentication Methods

1. No Authentication (Development Only)

Use Case: Local development, testing environments Security: None - suitable only for development

2. Username/Password Authentication

Use Case: Simple deployments with basic security Security: Basic authentication with shared credentials

3. Token-Based Authentication

Use Case: Simple token-based access control Security: Shared secret token authentication
Use Case: Production deployments requiring fine-grained access control Security: JWT-based authentication with user credentials Benefits:
  • Decentralized authentication
  • Subject-level permissions
  • Automatic token renewal
  • Audit trails

Creating User Credentials

  1. Generate user credentials with NATS CLI:
  1. Configure permissions in account settings:

5. NKey Authentication

Use Case: Cryptographic authentication without JWT overhead Security: Ed25519 key-based authentication

Creating NKey

6. TLS Configuration

Basic TLS (Server Authentication)

Mutual TLS (Client + Server Authentication)

TLS Development Mode (Skip Verification)

Docker/Kubernetes Configuration

Docker Compose

Kubernetes ConfigMap

Kubernetes Secrets (for Authentication)

Migration from In-Memory

To migrate from in-memory to NATS queue:
  1. Deploy NATS Server: Set up NATS with JetStream enabled
  2. Configure Authentication: Set up appropriate auth method
  3. Update Configuration: Change QUEUE_TYPE=nats
  4. Restart Application: Deploy updated configuration
  5. Verify Operation: Check logs for successful NATS connection
The migration is seamless as the queue interface abstracts the implementation details.

Troubleshooting

Monitor NATS connection status in application logs:
Expected log messages:
  1. Connection Failures
Solution: Check NATS server is running and URL is correct
  1. Authentication Failures
Solution: Verify credentials file exists and has correct permissions
  1. TLS Certificate Issues
Solution: Check certificate files exist and have correct permissions
  1. Permission Errors
Solution: Ensure user has pub/sub permissions for chat.> subjects
For high-throughput deployments: