Commit Graph

62 Commits

Author SHA1 Message Date
Marius Bogoevici
31961ae595 Add support for durable subscriptions in Redis 2016-01-29 19:04:12 -05:00
Dave Syer
dfe78f6d32 Fix Spring AMQP dependencies temporarily 2016-01-28 09:00:46 +00:00
Gary Russell
e2485e3290 Clean Up Auto-Declare Context on Unbind 2016-01-27 22:00:08 -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
e792b0e347 Use LocalizedQueueConnectionFactory from Spring AMQP
- Remove LocalizedQueueConnectionFactory and the unit tests
   - The unit tests are already covered in Spring AMQP and also, certain methods accessors require public access to run tests from SCS
 - Kept the integration tests as is (though this can be removed as well - it is also covered in Spring AMQP)

This resolves #279
2016-01-19 09:22:53 -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
Gary Russell
7ee5df4033 RabbitMQ Cleanup (New Tests).
Simple polishing.
2015-12-18 22:24:12 -05: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
6f1f246dfb GH-211: PubSub Group Default to Random UUID
Resolves #211

Add a default UUID to the `BindingProperties.group` so a pubsub binding is
unique unless the group is specifically set.
2015-11-30 13:32:31 -05:00
Marius Bogoevici
770047871b Moved Rabbit management outside with the Rabbit bus 2015-11-19 17:15:02 -05:00
Gary Russell
d3c87daf64 GH-203: Support Late Binding with RabbitMQ
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.
2015-11-19 10:28:58 -05:00
Marius Bogoevici
522881e879 Ignore RawModeKafkaBinderTests#createInboundPubSubBeforeOutboundPubSub 2015-11-11 13:58:11 -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
Mark Pollack
1c374eead7 Tidy up maven dependency references to current project version 2015-10-23 15:17:34 -04: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
Marius Bogoevici
deecae93a6 Allow configuration of Kafka embedded headers in the bus 2015-09-29 20:50:19 -04:00
Marius Bogoevici
9ab7f24f2c Basic support for Kafka on Lattice 2015-09-14 10:02:53 -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
Mark Pollack
edd36c4990 Update snapshot deps to milestone deps 2015-09-11 10:36:04 -04:00
Marius Bogoevici
f4f6cb509d Add per-binding configuration for partitioning
- consumer and producer partitioning properties are defined per-binding
- unit tests
- Kafka binding fixes for partitioning
2015-09-09 21:09:49 -07:00
Dave Syer
94639cb72e Some javadocs for clarifying meaning of properties 2015-09-05 10:34:28 +01:00
Mark Fisher
b39c609fb0 renamed port properties 2015-09-04 09:47:50 -04:00
Marius Bogoevici
e82bfe6c91 Add support for Kafka in Cloud Foundry
- use the VCAP properties to find brokers and ports

Corrections to pom, renamed zkAddress to zkNodes
2015-09-04 09:47:47 -04:00
Marius Bogoevici
bd47560bd5 Add support for direct binding
and refactor channel proxy behaviour

- Remove DirectChannelProxyFactory;
- Proxies create channels as necessary, including support for PollableChannels;
- Channel beans are using the bean factory methods for the proxies;
- Coordinate bind/unbind across a context through the internal Bindable interface;
- Add support for embedding modules as independent child contexts of the main module, wrapped in a Bindable interface;
- Add support for channel name namespacing;
- Use a shared channel registry (consulted by the proxies) to create direct bindings;

Restrict the use of SharedChannelRegistry to aggregation

Fixed copyrights

Polishing based on comments from the previous branch

Tweaks

- namespacing takes into account module index, so multiple modules with the same class can partiticipate
- fix how properties are passes to parent/child
- Split ChannelBindingLifecycle from ChannelBindingAdapter and register it with each child;

Javadoc updates

Pass only  prefixed properties

Actually use the filtering method

Lifecycle simplifications

- Removing BindableChannelWrapper and UnbindOnCloseApplicationListener and relying on ChannelBindingListener solely;
- Some code cleanup

Further simplifications

More cleanup

Remove BindableUtils, rename ChannelBindingAdapter

Minor improvements

Addressing some comments, renaming, etc

More polishing
2015-09-02 15:52:19 -04:00
Marius Bogoevici
3eeeaec160 XD-3445 Fix Kafka Binder
- add autoconfiguration support and missing configuration properties
- add version in pom.xml
- fix dependency on spring-cloud-stream-binder-test
2015-08-31 22:37:45 -04:00
Dave Syer
610cf5608d Apply same autoconfig rules for redis as rabbit 2015-08-29 10:49:20 +01:00
Dave Syer
9b4c12b517 Fix ordering for rabbit autoconfig 2015-08-29 10:44:03 +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
Mark Fisher
6de7f7cb33 avoid dots in producer property keys 2015-08-25 13:57:59 -04: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
56469353b3 Autoconfigure rabbitCloud before rabbit auto-config
- This ordering is required to avoid having 2 beans created for rabbit `ConnectionFactory`
2015-08-21 07:59:23 -07:00
Ilayaperumal Gopinathan
44bf181ff0 AutoConfigure redisCloud before redis auto-config 2015-08-20 17:48:49 -07:00
Ilayaperumal Gopinathan
55591889e1 Add auto-config for Local binder
- Make `local` binder compile dependency as optional
 - Add `local` binder auto configuration
    - This imports local binder properties and binder
 - Add `spring.factories` to enable auto configuration when this archive
is on the classpath
2015-08-20 15:08:17 +02:00