Commit Graph

72 Commits

Author SHA1 Message Date
Marius Bogoevici
a854e986aa Revert to Rabbit version provided by Spring Boot/Cloud
At the time of the commit it is 1.5.3.RELEASE, but it will pull the version as per the Spring Cloud parent version.
2016-02-04 11:36:35 -05:00
Mark Fisher
7ffe9070e3 removed more lattice references 2016-02-04 08:55:07 -05:00
Ilayaperumal Gopinathan
32c727a5d4 Remove lattice profile usages/references 2016-02-04 13:40:53 +05:30
Ilayaperumal Gopinathan
9c381d3b26 Fix exception type in kafka topic validation test 2016-02-04 12:48:42 +05:30
Mark Fisher
252aee4079 polishing 2016-02-03 19:51:17 -05:00
Marius Bogoevici
8271478e27 GH-306 Add support for start offset and reset flag
Resolves #306

Fix configuration property passing

Adjust property names, fix environment merging from parent
2016-02-03 19:32:51 -05:00
Ilayaperumal Gopinathan
8f795074e9 Allow underscore in kafka topic name
- Instead of escaping the topic name, perform validation that throws `RuntimeException` when the given kafka topic name doesn't meet the criteria set by Kafka.

This resolves #217
2016-02-03 15:34:10 -05:00
Dave Syer
e9286c849a Add spring-rabbit explicitly to the dependencies BOM
It actually still has to be managed using a property in
spring-cloud-stream-binders-parent, but this change is for users.
Any user that wants an app using stream and rabbit needs to use the
spring-cloud-dependencies BOM. A gradle user has to do nothing else
with this change. A maven user still has to add an explicit
<spring-aqmp.version/> to the application POM.
2016-02-03 09:05:20 +00:00
Eric Bottard
7fb834981a GH-291 Provide an option to create a mutable Tuple
This fixes spring-cloud/spring-cloud-stream#290
2016-02-02 17:23:43 -05:00
Marius Bogoevici
7477fcbee9 Add health indicators infrastructure
- Adds a generic 'bindersHealthIndicator' bean controlled by `management.health.binders.enabled` that tallies results from binders
- Binders are expected to expose one or more health indicators based on the status of the middleware connection. If no health indicators are exposed, the status is deemed to be 'UNKNOWN'
- Add support for Redis and Rabbit based on existing health indicators

Moved binder health indicator to autoconfiguration

Also updated copyright
2016-02-02 22:15:33 +05:30
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