- ChannelFactory to create message channels and configure message converters
Autowire ChannelFactory
Create message channel on demand
ChannelFactory implementation to use SharedChannelRegistry
Create ChannelFactory interface
If the broker was down, the binding failed. Defer the queue/exchange/binding declarations
until the broker is available (already supported by `RabbitAdmin`.
Solves spring-cloud/spring-cloud-stream#203
Fix PubSub, Test
- Too many binder prefixes on pub sub queue name.
- Mismatched queue args in test case.
- instead of publishing to the default exchange, producers now publish to a topic exchange, to which the main queue is bound
- taps on a stream simply bind a queue to the same exchange with a name including the group for the tapping stream and a
routing key pattern `#`
- this means that multiple instances of the same tap stream will compete but multiple tap streams will get a copy
- for partitioned data, a single topic exchange is used, which each partition queue bound with its name as the routing key
- this means taps on partitioned data see the consolidated messages
Remove unused binder utilities.
Use TopicExchange Always
Use a TopicExchange when binding a pubSub producer for consistency.
Remove Deprecated Binder Method
Add group to BindingProperties
- also fix artifact name in test support pom
- also fix some kafka tests (does not imply that kafka taps work - yet)
Fixes GH-166 (https://github.com/spring-cloud/spring-cloud-stream/issues/166)
Since `onInit()` in the `MessageChannelBinderSupport` was called before the `evaluationContext` population,
the `RedisMessageChannelBinder#errorAdapter` caused `NPE` for its `evaluationContext`.
* Change the initialization order
* Use `ExpressionUtils` to populate `evaluationContext` - creates `StandardEvaluationContext` if there is no one in the `applicationContext`
* Add more initializations for the `RedisMessageChannelBinder#errorAdapter`
* Remove explicit `evaluationContext` population from the `AbstractTestBinder` to rely on the fix for this ticket
* Some other simple polishing
Address PR comments
- It is assumed to be the responsibility of the user to specify the appropriate jmx domain name for the modules (either via s-c-dataflow or via module launcher)
Bindable picks up 2 new methods to enumerate the binding names, and
then it's a simple matter to list all the inputs and outputs and their
properties.
Fixes gh-149
JIRA: https://jira.spring.io/browse/XD-3597
Separates the functionality currently provided by the ChannelBindingLifecycle,
binding inputs and outputs separately at the latest, and earliest phases,
respectively - allowing for SmartLifecycle beans that subscribe to inputs at start
to subscribe before inputs start producing data.
The current functionality of automatically starting the context
on the ChannelBindingLifecycle auto-startup is deferred to a refresh listener.
Removes the call to application.stop() within the ChannelBindingLifecycle, which
is redundant (the ChannelBindingLifecycle would be stopped when the context itself
is stopped anyway).
Adding a test for binding lifecycle
Polishing
Fix supports check on FromMessageConverter: make sure the targetType is on the LHS
Fix PojoToStringMessageConverter: handle message payload tuple separately so that the tupleToString converter is set
- For the message channels being created, set the corresponding `dataType` and `message-converters` based on the `contentType` value set per-binding
- This is applicable for both direct-binding and the channels that connect to the binder
- This is a temporary location for the `tuple` project and would eventually be moved to something like `spring-data-commons`
- Note: This project currently removes `batch` package from the tuple project in XD
- The corresponding test classes are yet to be moved.
- adding includes/excludes properties for modules
- includes and their transitive deps are mandatory, excludes can be pattern-based
- supports both individual module launch and aggregation
Allow exclusions to apply to all artifacts
Fixing classloading issues when LaunchedUrlClassloader is used with JARs from the Maven repository
Javadoc enhancements