ОРУ. Как маршрутизировать сообщения в службе приема?
Switchyard - новая вещь для меня, и я совершенно заблудился, где искать. Что у меня есть две службы, связанные ESB. От отправителя я отправляю простой класс с данными. Основываясь на типе класса, я хочу, чтобы сторона получателя решила, что делать. Таким образом, типом класса будет действие, и данные в этом классе будут использоваться в качестве значений для этого действия.
Например, если я хочу создать нового клиента, я отправляю на автобус что-то вроде этого:
class CreateCustomerMessage{
public String fName;
public String lName;
public Int age;
}
получатель получает сообщение, видит, что он должен создать клиента, и направляет это сообщение
class CustomerOperationsBean{
public Long createCustomer(CreateCustomerMessage message){...}
}
И создает этот клиент. Может кто-нибудь показать мне, как это сделать?
1 ответ
Итак, вот что я нашел. Если у вас есть CamelService (я использую конфигурацию маршрутизации Java), вы можете сопоставить класс входящего сообщения, используя конструкцию, подобную этой:
public void configure() {
from("switchyard://QueueConsumerService")
.choice()
.when(body(InventoryRequest.class))
.log("Received Inventory message : ${body}")
.to("some_endpoint")
.when(body(AuditRequest.class))
.log("Audit request : ${body}");
.to("some_other_endpoint")
}
и это все. Здесь some_endpoint и some_other_endpoint могут быть любой конечной точкой, классом Java или другим маршрутизатором Camel. гл хф.