Install & Compatibility
Where this runs
No compatibility data collected yet for this library.
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
StreamChannelBroker
✓ import { StreamChannelBroker } from 'redis-streams-broker'
✗ const StreamChannelBroker = require('redis-streams-broker')
ESM import is recommended; the package ships TypeScript types.
broker (default import)
✓ import redisStreamsBroker from 'redis-streams-broker'
✗ const broker = require('redis-streams-broker')
Default import resolves to the main module; named import is preferred for clarity.
StreamChannelBroker
✓ const { StreamChannelBroker } = require('redis-streams-broker')
✗ const StreamChannelBroker = require('redis-streams-broker')
CommonJS destructuring is necessary; direct require returns the module, not the class.
Demonstrates connecting to Redis, publishing a message, creating a consumer group, subscribing with a consumer, and acknowledging messages.
import Redis from 'ioredis';
import { StreamChannelBroker } from 'redis-streams-broker';
const redisClient = new Redis(process.env.REDIS_URL ?? 'redis://127.0.0.1:6379');
const broker = new StreamChannelBroker(redisClient, 'myQueue');
async function main() {
const payloadId = await broker.publish({ a: 'Hello', b: 'World' });
console.log('Published payload ID:', payloadId);
const consumerGroup = await broker.joinConsumerGroup('MyGroup');
const subscriptionHandle = await consumerGroup.subscribe('Consumer1', async (payloads) => {
for (const element of payloads) {
console.log('Payload ID:', element.id);
console.log('Channel:', element.channel);
console.log('Payload:', element.payload);
try {
await element.markAsRead();
} catch (err) {
console.error('Ack failed:', err);
}
}
});
// Keep process alive to receive messages
process.on('SIGINT', () => {
consumerGroup.unsubscribe(subscriptionHandle);
process.exit();
});
}
main().catch(console.error);
Errors
Common errors & fixes
TypeError: StreamChannelBroker is not a constructor
Using require('redis-streams-broker') directly instead of destructuring the named export.
fixUse const { StreamChannelBroker } = require('redis-streams-broker'); Error: ERR unknown command 'XGROUP'
Redis server version is too old (pre-5.0) or module not loaded; consumer group commands require Redis 5.0+.
fixUpgrade Redis to version 5.0 or later.
TypeError: redisClient.pipeline is not a function
The provided Redis client does not support pipeline (only ioredis supports it natively).
fixUse an ioredis client instance.
Audit
Dependencies
ioredisrequiredOnly supported Redis client for injecting
nanoidrequiredAuto-generating subscription handles
redis-scripto2requiredLoading Lua scripts for Redis commands