JasonS
JasonS

Reputation: 455

Spring cloud stream to support routing messages dynamically

i want to create a common project (using spring cloud stream) to route messages to different (consumer) projects dynamically according to message content. (rabbitmq as the message broker)

does spring cloud stream support it? if not, any proposed way to accomplish that? thx

Upvotes: 1

Views: 4320

Answers (2)

Axiomatic-1
Axiomatic-1

Reputation: 61

You can use StreamBridge with topicname and spring-cloud will bind it with destination automatically in runtime.

@Autowired
private final StreamBridge streamBridge;
  
public void sendDynamically(Message message, String topicName) {
    streamBridge.send(route, topicName);
}

https://docs.spring.io/spring-cloud-stream/docs/current/reference/html/spring-cloud-stream.html#_streambridge_and_dynamic_destinations

Upvotes: 0

Ilayaperumal Gopinathan
Ilayaperumal Gopinathan

Reputation: 4179

You can achieve that by setting spring.cloud.stream.dynamicDestinations property to a list of destination names (if you know the name beforehand) or keeping it as empty. The BinderAwareChannelResolver takes care of dynamically creating/binding the outbound channel for these dynamic destinations.

There is an out of the box router application available which does the similar thing.

Upvotes: 2

Related Questions