Create a namespace under a tenant via: pulsar-admin namespaces create {tenant}/{namespace}
Set a retention policy to prevent data deletion before it is consumed: pulsar-admin namespaces set-retention {tenant}/{namespace} --size 10G --time 7d (size -1 means unlimited; time -1 means unlimited duration).
Set a backlog quota to limit unconsumed message accumulation: pulsar-admin namespaces set-backlog-quota {tenant}/{namespace} --limit 5G --limitTime 86400 --policy producer_request_hold (other policies: producer_exception, consumer_backlog_eviction).
Apply message TTL at the namespace level to automatically expire unconsumed messages after a period: pulsar-admin namespaces set-message-ttl {tenant}/{namespace} --messageTTL 3600 (seconds).
Known gotchas
Retention policy and backlog quota are independent controls with different purposes: retention keeps data accessible after acknowledgment; backlog quota limits data before acknowledgment. Setting only one without understanding the other can cause unexpected data loss or producer blocking.
The producer_request_hold backlog policy causes producers to block when the quota is exceeded; if your producers are not designed to handle blocking, use producer_exception to return an error instead.
Namespace-level policies apply to all topics within the namespace; topic-level policy overrides are possible via pulsar-admin topics set-retention but require careful management to avoid inconsistency.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp