Releases: airtai/faststream
v0.5.14
What's Changed
- Update Release Notes for 0.5.13 by @faststream-release-notes-updater in #1548
- Add allow_auto_create_topics to make automatic topic creation configurable by @kumaranvpl in #1556
Full Changelog: 0.5.13...0.5.14
v0.5.13
What's Changed
- feat: nats filter JS subscription support by @Lancetnik in #1519
- fix: correct RabbitExchange processing by OTEL in broker.publish case by @Lancetnik in #1521
- fix: correct Nats ObjectStorage get file behavior inside watch subscriber by @Lancetnik in #1523
- Resolve Issue 1386, Add rpc_prefix by @aKardasz in #1484
- fix: correct spans linking in batches case by @draincoder in #1532
- fix (#1539): correct anyio.create_memory_object_stream annotation by @Lancetnik in #1541
- fix: correct publish_coverage CI by @Lancetnik in #1536
- Add NatsBroker.new_inbox() by @maxalbert in #1543
- fix (#1544): correct Redis message nack & reject signature by @Lancetnik in #1546
New Contributors
- @aKardasz made their first contribution in #1484
- @maxalbert made their first contribution in #1543
Full Changelog: 0.5.12...0.5.13
v0.5.12
What's Changed
Now, FastStream
provides users with the ability to pass the config
dictionary to confluent-kafka-python
for greater customizability. The following example sets the parameter topic.metadata.refresh.fast.interval.ms
's value to 300
instead of the default value 100
via the config
parameter.
from faststream import FastStream
from faststream.confluent import KafkaBroker
config = {"topic.metadata.refresh.fast.interval.ms": 300}
broker = KafkaBroker("localhost:9092", config=config)
app = FastStream(broker)
- Update Release Notes for 0.5.11 by @faststream-release-notes-updater in #1511
- docs: update filters example by @Lancetnik in #1516
- Add config param to pass additional parameters to confluent-kafka-python by @kumaranvpl in #1505
Full Changelog: 0.5.11...0.5.12
v0.5.11
What's Changed
- Update Release Notes for 0.5.10 by @faststream-release-notes-updater in #1482
- feat: provide with an ability to create default RMQ Exchange by @Lancetnik in #1485
- docs: fix typos by @crazymidnight in #1489
- chore: update CI triggers to minify useless runs by @Lancetnik in #1483
- Update link to badges by @kumaranvpl in #1496
- Run tests every day at 12:00 AM by @kumaranvpl in #1497
- Chore: update deps by @kumaranvpl in #1503
- fix: include NatsRouter streams to original broker by @Lancetnik in #1509
New Contributors
- @crazymidnight made their first contribution in #1489
Full Changelog: 0.5.10...0.5.11
v0.5.10
What's Changed
Now you can return Response class to set more specific outgoing message parameters:
from faststream import Response
@broker.subscriber("in")
@broker.subscriber("out")
async def handler():
return Response(body=b"", headers={})
- Pass logger to confluent producer and consumer by @kumaranvpl in #1464
- Fixes #1412 with
TestKafkaBroker
behaviour where Consumer Groups weren't being respected by @sifex in #1413 - Chore: update dependency versions by @kumaranvpl in #1478
- Remove typing-extensions version restriction by @kumaranvpl in #1477
- feat (#1431): add Response class by @Lancetnik in #1481
New Contributors
Full Changelog: 0.5.9...0.5.10
v0.5.9
What's Changed
- Update Release Notes for 0.5.8 by @faststream-release-notes-updater in #1462
- Exclude typing_extensions version 4.12.* by @kumaranvpl in #1467
- fix: add group/consumer to hash to avoid overwriting by @fbraem in #1463
- Bump version to 0.5.9 by @kumaranvpl in #1468
New Contributors
Full Changelog: 0.5.8...0.5.9
v0.5.8
What's Changed
This is the time for a new NATS features! FastStream supports NATS Key-Value and Object Storage subscribption features in a native way now (big thx for @sheldygg)!
-
KeyValue creation and watching API added (you can read updated documentation section for changes):
from faststream import FastStream, Logger from faststream.nats import NatsBroker broker = NatsBroker() app = FastStream(broker) @broker.subscriber("some-key", kv_watch="bucket") async def handler(msg: int, logger: Logger): logger.info(msg) @app.after_startup async def test(): kv = await broker.key_value("bucket") await kv.put("some-key", b"1")
-
ObjectStore API added as well (you can read updated documentation section for changes):
from faststream import FastStream, Logger from faststream.nats import NatsBroker broker = NatsBroker() app = FastStream(broker) @broker.subscriber("file-bucket", obj_watch=True) async def handler(filename: str, logger: Logger): logger.info(filename) @app.after_startup async def test(): object_store = await broker.object_storage("file-bucket") await object_store.put("some-file.txt", b"1")
-
Also now you can use just
pull_sub=True
instead ofpull_sub=PullSub()
in basic case:from faststream import FastStream, Logger from faststream.nats import NatsBroker broker = NatsBroker() app = FastStream(broker) @broker.subscriber("test", stream="stream", pull_sub=True) async def handler(msg, logger: Logger): logger.info(msg)
Finally, we have a new feature, related to all brokers: special flag to suppress automatic RPC and reply_to responses:
@broker.subscriber("tests", no_reply=True)
async def handler():
....
# will fail with timeout, because there is no automatic response
msg = await broker.publish("msg", "test", rpc=True)
- fix: when headers() returns None in AsyncConfluentParser, replace it with an empty tuple by @andreaimprovised in #1460
- Implement Kv/Obj watch. by @sheldygg in #1383
- feat: add subscriber no-reply option by @Lancetnik in #1461
New Contributors
- @andreaimprovised made their first contribution in #1460
Full Changelog: 0.5.7...0.5.8
v0.5.7
What's Changed
Finally, FastStream supports OpenTelemetry in a native way to collect the full trace of your services! Big thanks for @draincoder for that!
First of all you need to install required dependencies to support OpenTelemetry:
pip install faststream[otel]
Then you can just add a middleware for your broker and that's it!
from faststream import FastStream
from faststream.nats import NatsBroker
from faststream.nats.opentelemetry import NatsTelemetryMiddleware
broker = NatsBroker(
middlewares=(
NatsTelemetryMiddleware(),
)
)
app = FastStream(broker)
To find detailt information just visit our documentation aboout telemetry
P.S. The release includes basic OpenTelemetry support - messages tracing & basic metrics. Baggage support and correct spans linking in batch processing case will be added soon.
- fix: serialize TestClient rpc output to mock the real message by @Lancetnik in #1452
- feature (#916): Observability by @draincoder in #1398
New Contributors
- @draincoder made their first contribution in #1398
Full Changelog: 0.5.6...0.5.7
v0.5.6
What's Changed
- feature: add --factory param by @Sehat1137 in #1440
- feat: add RMQ channels options, support for prefix for routing_key, a… by @Lancetnik in #1448
- feature: Add
from faststream.rabbit.annotations import Connection, Channel
shortcuts - Bugfix: RabbitMQ RabbitRouter prefix now affects to queue routing key as well
- Feature (close #1402): add
broker.add_middleware
public API to append a middleware to already created broker - Feature: add
RabbitBroker(channel_number: int, publisher_confirms: bool, on_return_raises: bool)
options to setup channel settings - Feature (close #1447): add
StreamMessage.batch_headers
attribute to provide with access to whole batch messages headers
New Contributors
- @Sehat1137 made their first contribution in #1440
Full Changelog: 0.5.5...0.5.6
v0.5.5
What's Changed
Add support for explicit partition assignment in aiokafka KafkaBroker
(special thanks to @spataphore1337):
from faststream import FastStream
from faststream.kafka import KafkaBroker, TopicPartition
broker = KafkaBroker()
topic_partition_fisrt = TopicPartition("my_topic", 1)
topic_partition_second = TopicPartition("my_topic", 2)
@broker.subscribe(partitions=[topic_partition_fisrt, topic_partition_second])
async def some_consumer(msg):
...
- Update Release Notes for 0.5.4 by @faststream-release-notes-updater in #1421
- feature: manual partition assignment to Kafka by @spataphore1337 in #1422
- Chore/update deps by @Lancetnik in #1429
- Fix/correct dynamic subscriber registration by @Lancetnik in #1433
- chore: bump version by @Lancetnik in #1435
Full Changelog: 0.5.4...0.5.5