spring-projects/spring-xd — pull request #866 by garyrussell (2014-05-19 19:56:54+00:00)
Title: XD-1338 RabbitMessageBus Module Deployment Props

XD-1338 Partition Metadata Initial Commit

Make ModuleDeployment Properties available in
Messagebus.bind*().

Currently, properties are only used in the RabbitMessageBus.
Properies arrive in the bind*() methods and an internal
property accessor is used to extract the properties (or fallback
to the defaults configured in the application.yml if a
particular property does not exist).

XD-1338 prep part 2 (work in progress)

Ultimately the goal is to provide the ModuleDeploymentProperties within the
runtime Module instance (e.g. SimpleModule) so that it can be accessed by
plugins. For example, the StreamPlugin will then be able to use any "consumer"
and/or "producer" properties when calling bindConsumer() and bindProducer()
methods on the MessageBus for a given Module.

While initially the plan was simply to pass those deployment properties along
within the DeploymentMetadata, that class itself overlapped with the recently
added ModuleDescriptor. So, this commit actually removes the DeploymentMetadata
class altogether. The ModuleDescriptor replaced the ModuleDeploymentRequest
object, and it wraps a ModuleDefinition (the "essence" of a module that is
shared by all instances within any stream) while adding the context for a
particular module instance within a stream (the group, index,
sourceChannelName, and sinkChannelName). Those properties are the ones that
were also exposed via DeploymentMetadata.

The most significant part of this commit is the modification to the constructor
for SimpleModule as shown below.

BEFORE:

public SimpleModule(ModuleDefinition definition, DeploymentMetadata metadata) {

AFTER:

public SimpleModule(ModuleDescriptor descriptor, ModuleDeploymentProperties deploymentProperties)

David fixed failing tests

passing deployment properties along for StreamPlugin

Conflicts:

spring-xd-dirt/src/main/java/org/springframework/xd/dirt/server/ContainerRegistrar.java

Resolved.

Pass Consumer/Producer Props to MessageBus

RabbitMessageBus Overrride Default Properties

Add test cases.

TODO:

- Producer properties for more exotic producers
(dynamic producers from the router sink, tap producers, etc).

- Add logic to detect/log/(or error) if an invalid property is supplied for a bus

- Add logic for "affinity" partitioning where the producer evaluates where a
particular message should go and the consumers listen to partitioned queues.