开关站。如何在 Receiver Service 中路由消息?

Switchyard. How to route messages in Reciever Service?

Switchyard 对我来说是新事物,我完全不知道该去哪里找。 我有两个由 ESB 连接的服务。 我从发件人发送带有数据的简单 class。基于 class 我想要的类型 接收方决定做什么。 因此 class 的类型将是操作,并且 class 中的数据将用作该操作的值。

例如,如果我想创建新客户,我会像这样发送到总线:

class CreateCustomerMessage{
  public String fName;
  public String lName;
  public Int age;
}

接收方收到消息,看到他必须创建客户并将此消息路由到

class CustomerOperationsBean{
  public Long createCustomer(CreateCustomerMessage message){...}
}

并创建了这个客户。 有人可以告诉我该怎么做吗?

所以,这是我的发现。 如果您有 CamelService(我使用 java 路由配置),您可以使用类似于此的构造来匹配传入消息 class:

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_endpointsome_other_endpoint 这里可以是任何端点,java class 或者另一个 Camel路由器。 gl hf.