Commit Graph

37 Commits

Author SHA1 Message Date
Marius Bogoevici
31961ae595 Add support for durable subscriptions in Redis 2016-01-29 19:04:12 -05:00
Marius Bogoevici
192aa79baa Remove default groups, support default pubsub with empty group
Addressing PR comments
2016-01-27 21:59:58 -05:00
Mark Fisher
c3758b9dc0 Binder simplification
* removed pub/sub methods from binder
* consumer group is now a parameter of the remaining bindConsumer method

* remove DynamicProducer from Binder
* Move logic to create the dynamic channel to the channel resolver.
* Return bindings from bind methods and use them for unbinding
* Suffix for dlq

Move All Rabbit Binder CleanUp to Test Bindera

More RabbitMQ Binder Test Cleanup

Clean up declarations for remaining tests.

removed BinderUtils

use Redis ZSET for consumer groups

copyright dates

AutoBindDLQ: Single DLQ Per Group When Partitioned

Configure a single DLQ for each group for all partitions.

Add DLX Exchange binding for each original queue routing key, including the partition.

Fix DLQ Binding (Producer Side)

Option was not allowed and the routing key was wrong.

Add test to verify producers can be bound before consumers.

`autoBindDLQ` must be set (or reset) on both sides for success.
2016-01-27 21:59:58 -05:00
Ilayaperumal Gopinathan
31ae416727 Remove Spring XD tuple dependency
- Use spring-cloud-stream-tuple instead

This resolves #280
2016-01-19 19:09:24 +05:30
Ilayaperumal Gopinathan
fa89e5bcb6 Handle binder config in BindingProperties
- Per-binding properties defined in `BindingProperties` need to hold the binder specific configurations needed when binding producer/consumers.
Previously, these were added in `ChannelBindingServiceProperties` as producer/consumer properties. Since these configuration properties are for
per-binding based on the input/output (consumer/producer) channel being bound it is better to move these properties into `BindingProperties`.
 - Add some of the supported producer/consumer properties into BindingProperties

- This fixes #256

Rename CommonBinderProperties -> BinderPropertyKeys

Rename class AbstractBinderPropertiesAccessor.java -> AbstractBindingPropertiesAccessor.java
2015-12-30 14:08:56 -05:00
bamboo
b869cb8c4b [artifactory-release] Next development version 2015-12-21 17:18:25 +00:00
bamboo
f3d46fc120 [artifactory-release] Release version 1.0.0.M3 2015-12-21 17:18:25 +00:00
Eric Bottard
286ba44ff1 Remove TODOs 2015-12-18 16:44:08 +01:00
Mark Fisher
df1817cc51 polishing 2015-12-17 18:38:35 -05:00
Marius Bogoevici
a4f97b364e Binders with default settings inherit from module's configuration
Resolve #229

* Optimizes connection factory creation for binders that can use Boot's autoconfiguration
* Make binder contexts a child of main context when creating a Binder with default configuration settings
* Inherit environment from main context when the Binder context is not a child, and make that optional
* Default environment inheritance to true
* Tests
2015-12-17 11:51:10 -05:00
Marius Bogoevici
bf178360ee Remove autoconfig
Ensure that the autoconfig and the cloud config don't overlap

Removed SeedConfiguration
2015-12-10 13:35:26 -05:00
Marius Bogoevici
96f96f7621 Initial implementation of multibinder support
- Addresses #138,#172,#173 with support for multiple binders in an application
- Binders can be of multiple types (e.g. Rabbit or Kafka), as well as multiple binders of the same type connecting to different system (e.g. multiple Rabbit binders connecting to different Rabbit clusters)
- Binders are now created in a separate context, allowing for multiple configurations
- Adds the `spring.cloud.spring.binders` namespace that allows for creating configuration properties for multiple binders
- Add support for default binder, modify Kafka tests to use multiple brokers when running embedded
2015-12-09 11:08:04 -05:00
Marius Bogoevici
bcff75b20b GH-213 Merge Binder SPI into Core
- Moved contents of `spring-cloud-stream-binder-spi` into `spring-cloud-stream`
- Removed `spring-cloud-stream-binder-local` and used local binder implementation for tests exclusively
2015-11-30 17:28:24 -05:00
Gary Russell
a375e61260 XD-3519: Rabbit Taps
- 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)
2015-11-10 20:25:49 -05:00
Artem Bilan
2e7f9cc729 GH-166: Fix ChannelBinder config inconsistency
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
2015-10-29 16:41:34 -04:00
bamboo
7dc9f2e324 [artifactory-release] Next development version 2015-10-23 19:34:46 +00:00
bamboo
bd22e119c8 [artifactory-release] Release version 1.0.0.M2 2015-10-23 19:34:44 +00:00
Eric Bottard
7023e16196 XD-3414: Create a new project for @RedisRule 2015-10-23 13:06:36 -04:00
Mark Pollack
02dd05ec22 Update to Spring Cloud Build M2 2015-10-22 16:20:13 -04:00
Dave Syer
f51cc43d52 Add @Conditional to allow running in Cloud Foundry without connectors 2015-10-20 07:58:34 -04:00
bamboo
e630998101 [artifactory-release] Next development version 2015-09-11 19:53:41 +00:00
bamboo
83f762a31e [artifactory-release] Release version 1.0.0.BUILD 2015-09-11 19:53:39 +00:00
Dave Syer
610cf5608d Apply same autoconfig rules for redis as rabbit 2015-08-29 10:49:20 +01:00
Ilayaperumal Gopinathan
b60ccd1427 Re-add bean conditions for cloud config
- Re-add `@ConditionalOnMissingBean` to connection factory beans in cloud configurations
 - This is needed at least for CF case where auto-reconfiguration sets up connection factory beans
2015-08-28 12:33:09 -07:00
Eric Bottard
1ce40497c9 Fix copyrights 2015-08-23 15:19:09 +02:00
Ilayaperumal Gopinathan
1e8989a45a Remove cloud connector dependencies from S-C-S
- Remove lattice and cf connector dependencies from core S-C-S and binder
  - The idea is to have these dependencies defined in s-c-s-modules so that they
are specified in one place and make the module run on local/cloud environment in a
self contained manner
  - Keep the `spring-cloud-core` dependency to binder so that the Cloud configuration
is used to get the appropriate services for the redis/rabbit binder
2015-08-22 12:40:38 -04:00
Ilayaperumal Gopinathan
b3bc9c9673 Fix RedisService cloud configuration
- Remove `@ConditionalOnMissingBean` on RedisConnectionFactory
2015-08-22 00:17:24 -07:00
Ilayaperumal Gopinathan
44bf181ff0 AutoConfigure redisCloud before redis auto-config 2015-08-20 17:48:49 -07:00
Dave Syer
6d01a2ef79 Add getter to array property for binding
@ConfigurationProperties cannot bind to an array without a getter
2015-08-16 08:17:29 +01:00
Dave Syer
dafa0fdf40 Fix dependencies
In order to join the Spring Cloud release train we have to align the
dependencies and (more importantly) the dependency management strategy.
The strategy is to not put version  ids in <dependencies> (only
in <dependencyManagement>) where possible. And more importantly
we cannot use the releae train itself (creates a cycle).

This change achieves most of that (and mkae it possible for client
apps to use spring-cloud-starter-parent:Brixton.BUILD-SNAPSHOT)

Add spring-integration bom
2015-08-13 13:22:46 -04:00
David Turanski
05e12efb84 replaced CodecConfiguration with spring.factories
add new line
2015-08-12 12:43:52 -07:00
Dave Syer
818ad6e3e8 Add configuration processor as an optional dependency 2015-08-10 10:52:44 -04:00
Eric Bottard
38cf0cd738 XD-3380: Use AutoConfiguration for Binder Configurations 2015-08-10 10:44:31 -04:00
Mark Fisher
476664e38d removed redundant dependency 2015-08-10 08:46:44 -04:00
Eric Bottard
53c228239b Propagate Exception 2015-08-09 20:48:23 -04:00
David Turanski
0a84afd6ea Refactored Binder and Codec configuration
- replaced XML-based configuration with Java configuration
- removed optional on spring-cloud-stream-codec
- removed unnecessary test
2015-08-09 20:11:52 -04:00
David Turanski
35b74b00b3 Renamed MessageBus to Binder
- Renamed MessageBus to Binder
- Parameterized Binder interface
- Restored exclusion of spring-xd-codec
2015-07-21 15:34:29 -04:00