Skip to content

Commit e664b84

Browse files
authored
feat: add maxlen param to RedisStreamBroker (#81)
1 parent bfb89f2 commit e664b84

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

taskiq_redis/redis_broker.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ def __init__(
165165
consumer_id: str = "$",
166166
mkstream: bool = True,
167167
xread_block: int = 10000,
168+
maxlen: Optional[int] = None,
168169
additional_streams: Optional[Dict[str, str]] = None,
169170
**connection_kwargs: Any,
170171
) -> None:
@@ -184,6 +185,8 @@ def __init__(
184185
:param mkstream: create stream if it does not exist.
185186
:param xread_block: block time in ms for xreadgroup.
186187
Better to set it to a bigger value, to avoid unnecessary calls.
188+
:param maxlen: sets the maximum length of the stream
189+
trims (the old values of) the stream each time a new element is added
187190
:param additional_streams: additional streams to read from.
188191
Each key is a stream name, value is a consumer id.
189192
"""
@@ -200,6 +203,7 @@ def __init__(
200203
self.consumer_id = consumer_id
201204
self.mkstream = mkstream
202205
self.block = xread_block
206+
self.maxlen = maxlen
203207
self.additional_streams = additional_streams or {}
204208

205209
async def _declare_consumer_group(self) -> None:
@@ -235,7 +239,11 @@ async def kick(self, message: BrokerMessage) -> None:
235239
:param message: message to append.
236240
"""
237241
async with Redis(connection_pool=self.connection_pool) as redis_conn:
238-
await redis_conn.xadd(self.queue_name, {b"data": message.message})
242+
await redis_conn.xadd(
243+
self.queue_name,
244+
{b"data": message.message},
245+
maxlen=self.maxlen,
246+
)
239247

240248
def _ack_generator(self, id: str) -> Callable[[], Awaitable[None]]:
241249
async def _ack() -> None:

0 commit comments

Comments
 (0)