Существуют ли какие-либо условия для отправки сообщения между двумя «очередями» путем динамического изменения имени очереди в cloud.stream @Input("suffix"+"SampleQueueA")
и @Input("suffix"+"SampleQueueB")
Этот вариант использования с облачным потоком Sprig с использованием сервера сообщений RabbitMQ.Я попытался поместить сообщения в две разные очереди, динамически меняя имя очереди.
# Input bindings used for testing
spring:
rabbitmq:
host: 127.0.0.1
virtual-host: /defaultVH
username: guest
password: guest
cloud:
stream:
bindings:
ClientSampleQueueA:
binder: rabbit-A
contentType: application/x-java-object
group: groupA
destination: ClientSampleQueueA
VendorSampleQueueA:
binder: rabbit-A
contentType: application/x-java-object
group: groupA
destination: VendorSampleQueueA
# cloud.stream.bindings.input1.destination: customerId-1
# spring.cloud.stream.bindings.input2.destination: customerId-2
binders:
rabbit-A:
defaultCandidate: false
inheritEnvironment: false
type: rabbit
environment:
spring:
rabbitmq:
host: 127.0.0.1
virtualHost: /vhA
username: guest
password: guest
port: 5672
connection-timeout: 10000
interface Sink {
String INPUT1 = "ClientSampleQueueA";
String INPUT2 = "VendorSampleQueueA";
@Input(INPUT1)
SubscribableChannel input1();
@Input(INPUT2)
SubscribableChannel input2();
}
@Bean(name = "sourceChannel")
public MessageChannel localChannel() {
return new DirectChannel();
}
@Autowired
@Qualifier("sourceChannel")
private MessageChannel localChannel;
Хотите динамически разрешить очередь с помощью параметра Object.
private void sendMessage(Object body, Object contentType) {
localChannel.send(MessageBuilder.createMessage(body,
new MessageHeaders(Collections.singletonMap(MessageHeaders.CONTENT_TYPE, contentType))));
}