Recent Releases of rstream

rstream - 0.31.0

What's Changed

  • Remove requests from main depenencies by @mattalexanderhill in https://github.com/rabbitmq-community/rstream/pull/234
  • Fix sasl_configuration_mechanism for ClientPool. by @dbotwinick in https://github.com/rabbitmq-community/rstream/pull/238
  • Fix encoding long values with AMQP 1.0 encoder. by @dbotwinick in https://github.com/rabbitmq-community/rstream/pull/240

New Contributors

  • @dbotwinick made their first contribution in https://github.com/rabbitmq-community/rstream/pull/238

Full Changelog: https://github.com/rabbitmq-community/rstream/compare/0.30.0...0.31.0

- Python
Published by Gsantomaggio 6 months ago

rstream - 0.30.0

What's Changed

  • Fix for re-applying subscription filter on reconnect by @mattalexanderhill in https://github.com/rabbitmq-community/rstream/pull/229
  • Jump to 0.30 to align the tags to the versions by @Gsantomaggio in https://github.com/rabbitmq-community/rstream/pull/231

New Contributors

  • @mattalexanderhill made their first contribution in https://github.com/rabbitmq-community/rstream/pull/229

Full Changelog: https://github.com/rabbitmq-community/rstream/compare/0.29.0...0.30.0

- Python
Published by Gsantomaggio 9 months ago

rstream - v0.29.0

What's Changed

  • Change type annotation from list to Sequence by @nesb1 in https://github.com/rabbitmq-community/rstream/pull/219

Bug Fixes

  • Add a random name to the publish reference. by @Gsantomaggio in https://github.com/rabbitmq-community/rstream/pull/222. This avoids some unexpected deduplication cases where multiple producers send messages in the same stream

Full Changelog: https://github.com/rabbitmq-community/rstream/compare/0.28.0...0.29.0

- Python
Published by Gsantomaggio 11 months ago

rstream - v0.28.0

Note

This version contains only the configuration for the PIP deployment. Please refer to https://github.com/rabbitmq-community/rstream/releases/tag/0.20.7 as last version

What's Changed

  • update pip release with a token by @Gsantomaggio in https://github.com/rabbitmq-community/rstream/pull/218

Full Changelog: https://github.com/rabbitmq-community/rstream/compare/0.20.7...0.28.0

- Python
Published by Gsantomaggio about 1 year ago

rstream - v0.20.8

What's Changed

  • update pip release with token by @Gsantomaggio in https://github.com/rabbitmq-community/rstream/pull/218

Full Changelog: https://github.com/rabbitmq-community/rstream/compare/0.20.7...0.20.8

- Python
Published by Gsantomaggio about 1 year ago

rstream - v0.28.0

What's Changed

  • update pip release with token by @Gsantomaggio in https://github.com/rabbitmq-community/rstream/pull/218

Full Changelog: https://github.com/rabbitmq-community/rstream/compare/0.20.7...0.28.0

- Python
Published by Gsantomaggio about 1 year ago

rstream - v0.20.7

What's Changed

  • Fixed bugs of exception logging by @aborigeth in https://github.com/qweeze/rstream/pull/215

New Contributors

  • @aborigeth made their first contribution in https://github.com/qweeze/rstream/pull/215

Full Changelog: https://github.com/qweeze/rstream/compare/0.20.6...0.20.7

- Python
Published by DanielePalaia about 1 year ago

rstream - v0.20.6

What's Changed

  • Fixed a bug when subscriber frames not clears after unsubscribe by @nesb1 in https://github.com/qweeze/rstream/pull/211
  • Fixed a bug when used consumer_update_listener callback from another subscription by @nesb1 in https://github.com/qweeze/rstream/pull/210

Full Changelog: https://github.com/qweeze/rstream/compare/0.20.5...0.20.6

- Python
Published by DanielePalaia over 1 year ago

rstream - v0.20.5

What's Changed

  • Fixed a bug in the single active consumer scenario: See https://github.com/qweeze/rstream/pull/206 for more information by @nesb1
  • Better management of heartbeat scenario: See https://github.com/qweeze/rstream/pull/208 from more information by @DanielePalaia

Full Changelog: https://github.com/qweeze/rstream/compare/0.20.4...0.20.5

- Python
Published by DanielePalaia over 1 year ago

rstream - v0.20.4

What's Changed

Fixed a bug when, after unsubscribing, the next subscriber with the same subscriber name used a first subscriber callback and ignore second subscriber callback: https://github.com/qweeze/rstream/pull/204 by @nesb1

Full Changelog: https://github.com/qweeze/rstream/compare/0.20.3...0.20.4

- Python
Published by DanielePalaia over 1 year ago

rstream - v0.20.3

What's Changed

  • Created py.typed file for PEP-561 compliance by @nesb1 in https://github.com/qweeze/rstream/pull/200
  • bump version to 0.20.3 by @Gsantomaggio in https://github.com/qweeze/rstream/pull/202

New Contributors

  • @nesb1 made their first contribution in https://github.com/qweeze/rstream/pull/200

Full Changelog: https://github.com/qweeze/rstream/compare/0.20.2...0.20.3

- Python
Published by Gsantomaggio over 1 year ago

rstream - v0.20.2

What's Changed

  • Bug fix when resubscribing the same subscriber_name in a Consumer: See https://github.com/qweeze/rstream/issues/198

- Python
Published by DanielePalaia over 1 year ago

rstream - v0.20.1

Adding typing_extensions dependency in tool.poetry.dependencies to avoid importing it

- Python
Published by DanielePalaia over 1 year ago

rstream - v0.20.0

What's Changed

  • Migrating away from uamqp library: Till now, we were using the uamqp library as amqp 1.0 codec for the streaming protocol: https://github.com/Azure/azure-uamqp-python.

This library (which is partially using cython) is not correctly compiling on ARM architectures (see https://github.com/qweeze/rstream/issues/183) Furthermore, it will be supported only til 2025 (https://github.com/Azure/azure-uamqp-python/issues/374)

We put some effort to integrating a new amqp 1.0 codec based on the work done here:

https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/servicebus/azure-servicebus/azure/servicebus/_pyamqp

Which is a pure Python codec.

You can see the integration here:

https://github.com/qweeze/rstream/pull/194

The new codec creates a breaking change: The body field in the Producers is just a binary.

While before code like this was correct:

amqp_message = AMQPMessage( body="hello: {}".format(i), )

We now need to specify the body as binary (body is now indeed a list of bytes)

``` amqp_message = AMQPMessage( body=bytes("hello: {}".format(i), "utf-8"), )

```

Also, some imports may now be different. If you used MessageProperties before, for example:

``` import uamqp

message_properties = uamqp.message.MessageProperties("MessageId"+str(i), None, bytes("guest",'utf-8'), None, "CorrelationId"+str(i), "text/plain", "utf-8", None, None, None, None, 9999, "MyReplyToGroupId", None) ```

You now need to use the class exported on rstream like:

from rstream import Properties message_properties = Properties(message_id="MessageId"+str(i), user_id=None, to=bytes("guest",'utf-8'), subject=None, correlation_id="CorrelationId"+str(i), content_type="text/plain", content_encoding="utf-8", absolute_expiry_time=None, creation_time=None, reply_to_group_id="MyReplyToGroupId")

There are also some benefits to this migration as performance seems overall better at around 10/15%

- Python
Published by DanielePalaia over 1 year ago

rstream - v0.19.1

What's Changed

  • avoiding an asyncio.CancelledError in publishbuffered_messages during the close() of producers that sometimes was happning. See #190

- Python
Published by DanielePalaia almost 2 years ago

rstream - v0.19.0

What's Changed

  • Adding support for maxPublishersByConnection and maxSubscribersByConnection (before just the default 256 was possible) and some improvements in the SuperStreamConsumer connection management: See https://github.com/qweeze/rstream/issues/182

- Python
Published by DanielePalaia almost 2 years ago

rstream - v0.18.0

What's Changed

  • Adding support for CREATE/DELETE api for superstreams: See #186
  • Improved management of logs/exceptions: See #185

- Python
Published by DanielePalaia almost 2 years ago

rstream - v0.17.1

What's Changed

  • Improved the stability of the client for Consumer/Superstream consumers Metadata Update and cluster node disconnection scenarios: See #181
  • Improved examples doc: Created a full example to use the client in a raliable way to manage disconnections and metadata updates: See https://github.com/qweeze/rstream/tree/master/docs/examples/reliable_client

- Python
Published by DanielePalaia almost 2 years ago

rstream - v0.17.0

What's Changed

  • Redesign Metadata Update / Disconnection management scenarios for Producers/Superstream-producers: Now in case of a metadata Update or if a disconnection happens the Producers/Superstream producers will try to automatically reconnect without the need to define the onclosehandler callback. See #174

NOTE:

Please be careful this is breaking change. In case your are defining the onclosehandler callback to manage disconnection on Producer side this is not valid anymore.

- Python
Published by DanielePalaia about 2 years ago

rstream - v0.16.0

What's Changed

  • First implementation to handle MetaData Update events: See https://github.com/qweeze/rstream/pull/166 and https://github.com/qweeze/rstream/tree/master/docs/examples/metadata_update for further info by @DanielePalaia
  • Improvements on how locator connections are handled by @DanielePalaia

- Python
Published by DanielePalaia about 2 years ago

rstream - v0.15.0

What's Changed

  • Implemented filtering functionality for stream. See https://github.com/qweeze/rstream/issues/124 and https://github.com/qweeze/rstream/tree/master/docs/examples/filtering by @DanielePalaia

- Python
Published by DanielePalaia about 2 years ago

rstream - v0.14.2

What's Changed

  • Fix overflow error during publish_encoding: See https://github.com/qweeze/rstream/pull/154 for further information by @Gsantomaggio

- Python
Published by DanielePalaia over 2 years ago

rstream - v0.14.1

What's Changed

  • Improving send_batch performance: See #148 for further informations by @DanielePalaia
  • Redesign Frame encoding for Publish: See #149 and #133 for further informations by @DanielePalaia
  • Implement timeout on sendwait onconfirmation: See #82 for further informations by @DanielePalaia

Overall the improvements in the Frame encoding optimizations and sendbatch improved the performance (comparing to the v0.14.0 version) of around 15/20% on send and sendbatch (Tests done sending 10million of messages)

- Python
Published by DanielePalaia over 2 years ago

rstream - v0.14.0

What's Changed

  • Implemented a new method reconnect_stream for (Superstream)Producer/(Superstream)Consumer in order to reconnect to a stream/partition after a disconnection. See #135 #144 and #121 for further details (by @DanielePalaia)
  • Closing the locator connections of superstreams when not needed anymore. See #141 and #144 for further details (by @DanielePalaia)
  • Add external configurations to SASL connections. See #145 and #139 for further details (by @Gsantomaggio)

- Python
Published by DanielePalaia over 2 years ago

rstream - v0.13.0

What's Changed

  • Improving stability, cleanup and logging informations during a non clean disconnection from the server. Adding test coverage. See: #131 #140 #143
  • Adding the possibility to set a name to a Producer/Consumer connection: See: #137

- Python
Published by DanielePalaia over 2 years ago

rstream - v0.12.1

What's Changed

  • Fixed a memory leak in Client by @qweeze in https://github.com/qweeze/rstream/pull/129 (See https://github.com/qweeze/rstream/issues/125)
  • Improving callbacks handlers by @DanielePalaia in https://github.com/qweeze/rstream/pull/134 (See https://github.com/qweeze/rstream/issues/126)

- Python
Published by DanielePalaia over 2 years ago

rstream - v0.12.0

What's Changed

  • Treat all handle callbacks as asyncio tasks by @DanielePalaia in https://github.com/qweeze/rstream/pull/112
  • Adding ssl/tls example by @DanielePalaia in https://github.com/qweeze/rstream/pull/108
  • Updating dependencies to be able to run tests with python11 by @DanielePalaia in https://github.com/qweeze/rstream/pull/110
  • Read the offset in the correct way by @Gsantomaggio in https://github.com/qweeze/rstream/pull/118
  • Update to 0.12.0 by @Gsantomaggio in https://github.com/qweeze/rstream/pull/120

Full Changelog: https://github.com/qweeze/rstream/compare/0.11.1...0.12.0

- Python
Published by Gsantomaggio over 2 years ago

rstream - v0.11.1

What's Changed

  • Fixed a bug for publish confirmation in send_batch: See: https://github.com/qweeze/rstream/issues/90 and https://github.com/qweeze/rstream/pull/107

- Python
Published by DanielePalaia over 2 years ago

rstream - v0.11.0

What's Changed

  • Performance improvements during encoding of messages
  • Increased connection timeout to 3 seconds
  • Added examples on deduplication and superstreams key routing strategy

- Python
Published by DanielePalaia over 2 years ago

rstream - v0.10.3

What's Changed

  • Handle unexpected TCP disconnection in https://github.com/qweeze/rstream/issues/92 See the documentation

- Python
Published by DanielePalaia over 2 years ago

rstream - v0.10.2

What's Changed

  • Performance improvements when producing using send_sub_entry() (see https://github.com/qweeze/rstream/issues/86)
  • Added subentrybatchexample: https://github.com/qweeze/rstream/blob/master/docs/examples/subentry_batch/

- Python
Published by DanielePalaia over 2 years ago

rstream - v0.10.1

What's Changed

  • Performance improvements when producing using send() (see https://github.com/qweeze/rstream/issues/84)
  • Add Examples: https://github.com/qweeze/rstream/tree/master/docs/examples

- Python
Published by DanielePalaia over 2 years ago

rstream - v0.10.0

What's Changed

  • Single active consumer implementation https://github.com/qweeze/rstream/pull/79 See the blog post.
    You can find an example here
  • Manual tracking of stream offsets (store_offset to store offset to the server and query_offset to retrieve the offset from the server ): https://github.com/qweeze/rstream/issues/65
  • Removed the work-in-progress label https://github.com/qweeze/rstream/pull/76

- Python
Published by DanielePalaia over 2 years ago

rstream - v0.9.0

What's Changed

  • Server side offset manual storing is now supported: See https://github.com/qweeze/rstream/issues/65 and https://github.com/qweeze/rstream/blob/master/docs/examples/manualserveroffset_tracking/consumer.py
  • Improve performance for superstream producer using cache for ROUTE and PARTITION commands.

- Python
Published by DanielePalaia over 2 years ago

rstream - v0.8.1

What's Changed

  • Fixed a bug on offset returned by consumer callback: https://github.com/qweeze/rstream/pull/71

- Python
Published by DanielePalaia over 2 years ago

rstream - v0.8

What's Changed

  • Now supports superstreams: https://github.com/qweeze/rstream/issues/58
  • Improvements in consumer callbacks now returning the stream name, the offset and the timestamp of the message

- Python
Published by DanielePalaia over 2 years ago

rstream - v0.7

What's Changed

  • Now supports sub-entry batching: https://github.com/qweeze/rstream/issues/53
  • Fixed a bug when multiple different onpublishconfirm callbacks are set in Send()/SendBatch() apis

- Python
Published by DanielePalaia almost 3 years ago

rstream - v0.6

What's Changed

  • async confirmation handling in https://github.com/qweeze/rstream/pull/45. It is possible to receive the messages confirmation is asynchronous way

- Python
Published by DanielePalaia almost 3 years ago

rstream - v0.5

What's Changed

  • Setting producer API to be in line with others client
  • making publish asynchronous with a batching mechanism (https://github.com/qweeze/rstream/pull/32)
  • Updating uamqp library to 1.6.3

- Python
Published by DanielePalaia almost 3 years ago