* Remove offset save parallelism. Offset write parallelism was causing storage exceptions due to contentions, and seems to be an optimization left over before the final merge of at-least-once processing.
* Upgrade internal dependencies
* Revisit checkpointing documentation
* Add contributing docs
* Add git configuration for cross-platform devs
* Rename offsetSink method to offsetSaveSink
* Add new checkpointing feature to guarantee "at least once delivery". The new feature makes it easier to build a streaming graph that stores the stream position **after** processing an event. The old checkpoint behavior is still available. See the checkpointing documentation for more information.
Breaking changes:
* rename "SourceOptions.saveOffsets" to "SourceOptions.saveOffsetsOnPull"
* While streaming events from Azure IoT Hub, expose runtime information, to allow monitoring how many events are left to stream (see `MessageFromDevice.runtimeInfo`).
* Change IoTHub public API to make it easier setting streaming options (see `SourceOptions` model) and to increase consistency across the board.
* Allow to stream from the position stored in the checkpointing storage, without enabling checkpointing.
* Support Cassandra authentication when using Cassandra to store offsets checkpoints (@knordstrom).
* Fix: when building pull-requests, disable tests requiring Travis CI secrets.
* Fix: rename `created` messages property to `received`.
* Allow injecting Configuration, e.g. to override settings stored in application.conf.
* Reduce cost of logging instrumentation.
* Added some syntactic sure for the list of partitions to stream and the list of offsets to start from.
* Use SBT modules and add scripts to make it easier running the included samples.
* Upgrade Scala from 2.12.0 to 2.12.1
* Upgrade internal dependencies, e.g. Akka and Azure SDKs.
* Breaking changes to IoTHub API. Instead of having multiple methods with many permutations, use a SourceOptions object to capture the user intent. The object will be later extended to allow more options. Several methods removed. Deleted OffsetList and PartitionList classes.
* Allow to stream from the position stored in the checkpointing storage, without enabling checkpointing, i.e. the position stored remains unchanged. Allow to provide a fallback date if the offset is missing.
* Split the configuration class in subclasses, to better manage streaming, checkpointing, auth, etc. concerns.
* Added some syntactic sure for the list of partitions to stream.
* Add some more samples to the API usage.
* Improve Java support in the exposed API.
* Reduce cost of logging instrumentation.
* Add support for Cassandra authentication (checkpointing logic).
* Change default Cassandra checkpoints keyspace, to use `underscore` instead of `dash` character.
* Refactor checkpointing configuration to enable trait based dependency injection (make CP unit tests easier to write)
* Add new test dependency "mockito"
The “created” message property is still present, but is meant to contain the time with the Device clock, as opposed to the time of the IoT Hub. The two timestamps can differ when a message is queued in the device, or when a device clock is not in sync with the time of IoT Hub.
New:
* Add sink to allow cloud-to-device messages
* Add API to stop the streaming
* Extend API to allow streaming a subset of partitions
* Add support for Scala 2.12
* Add device filter
* Add Message ID and Content Type to message
Improvements:
* Improve performance, reduce the number of threads used
* Add more demos
* Upgrade internal dependencies
Breaking changes:
* Change configuration schema
* Change message model schema
* Change environment variables names in the reference configuration
* Add checkpointing feature, saving the current position of the streams, and automatically restart from the previous psition. The position can be saved either in Azure blobs or Cassandra.
* Support filtering the stream by message type (aka "model"), so that a device can send different kind of telemetry.
* Keep alive streams in absence of traffic
* Add device simulator app to simulate temperature and humidity sensors
* Add support for Scala 2.12.0-RC1
* Overall refactoring to reduce the amount of code on the client side
* Retry logic on storage operations
* Add Travis CI config
* Improve documentation
* Remove dependency on scala-arm
* Start move to json4s
* Change code style to 100 columns
* Add script to run the sample demos
* API changes, split IoTHub in two classes