Я создаю приложение на основе SpringCloud Stream, а тип обмена - это тема, и сообщение отправляется в две группы потребителей из обмена тем.Сценарий выглядит примерно так:
Служба A в моем приложении хочет отправить сообщение о встречах типа в службу B и службу C через обмен, называемый: встречи-запрос, основанный на различных сценариях использования, таких как книга,отмена, обновление и т. д.
Таким образом, сообщения с ключом назначений. book.B или assignments.cancel.B должны отправляться на приемные группы очередей.
сообщений с ключом назначений. book.C or assignments.cancel.C следует перейти к встречам группы очереди потребителей. C
Как добиться этого успешно?
Конфигурация службы источника:
spring.cloud.stream.bindings.output.destination=appointments-request
spring.cloud.stream.bindings.input.destination=appointments-reply
spring.cloud.stream.rabbit.bindings.output.producer.exchangeType=topic
spring.cloud.stream.rabbit.bindings.output.producer.routingKeyExpression=
appointments.#.#
КонфигурацияПотребительская служба B:
spring.cloud.stream.rabbit.bindings.input.consumer.exchangeType=direct
spring.cloud.stream.rabbit.bindings.input.consumer.group=
appointments.docmgmt
spring.cloud.stream.rabbit.bindings.input.consumer.bindingRoutingKey=
appointments.docmgmt
spring.cloud.stream.rabbit.bindings.input.consumer.routingKeyExpression=
appointments.#.docmgmt
Продюсерская служба A использует следующий метод для установки ключа маршрутизации
public boolean send(AppointmentEvent appointmentEvent)
{
logger.info("Sending event {} ",appointmentEvent);
return this.source.output().
send(MessageBuilder.withPayload(appointmentEvent).
setHeader(SimpMessageHeaderAccessor.DESTINATION_HEADER,
"appointments.book.docmgmt").build());
}
У меня не работает связь между службами.