此内容没有您所选择的语言版本。

9.3. Message Composition


9.3.1. Message Composers

A MessageComposer composes or decomposes a native binding message to or from SwitchYard's canonical message. It does so in three steps:
  1. Construct a new target message instance.
  2. Copy the content of the message.
  3. Delegate the header/property mapping to a ContextMapper.
A SOAPMessageComposer and CamelMessageComposer are included with SwitchYard. These implementations are used by their associated bindings but you can override these with your own implementations.

9.3.2. Create a Custom Message Composer

Procedure 9.2. Create a Custom Message Composer

  1. Implement the org.switchyard.component.common.composer.MessageComposer interface:
    public interface MessageComposer<T> {
        ContextMapper<T> getContextMapper();
        MessageComposer<T> setContextMapper(ContextMapper<T> contextMapper);
        Message compose(T source, Exchange exchange, boolean create) throws Exception;
        public T decompose(Exchange exchange, T target) throws Exception;
    }
    
  2. Specify your implementation in your switchyard.xml file:
    <binding.xyz ...>
        <messageComposer class="com.example.MyMessageComposer"/>
    </binding.xyz>
    
    

9.3.3. Custom Message Composer Properties

  • The getContextMapper() and setContextMapper() methods are bean properties. If you extend BaseMessageComposer, both properties are implemented for you.
  • Your compose() method needs to take the data from the passed-in source native message and compose a SwitchYard Message based on the specified Exchange. The create parameter determines whether or not we ask the Exchange to create a new Message, or use the existing one.
  • Your decompose() method needs to take the data from the SwitchYard Message in the specified Exchange and "decompose it" into the target native message.
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.