In the first part of this blog post series, I have discussed about the fundamental things you should know when you are starting the WSO2 ESB. With this blog post, I am going to give you some quick references for configuring WSO2 ESB for different practical enterprise integration scenarios. I am using the WSO2 ESB documentation and various blog posts for preparing this blog post.
If you need to print a custom log message with properties and custom messages, you can use log mediator as below.
1. Message mediation
- Log mediator can be used to check whether the message is actually passing through the ESB and the content of the message.
<
log level="full/
>
If you need to print a custom log message with properties and custom messages, you can use log mediator as below.
<
log level="custom"
>
<!-- Printing a static text message -->
<property name="STATUS" value="Priting the status"/>
<!-- Printing a property saved in the message context -->
<property name="RESULT" expression="get-property('result')"/>
<!-- Printing a result of an xpath expression -->
<property name="RESPONSE_CODE" expression="\\ns:response\ns:code\text()"/>
</log>
- If you need to route a message in to a web service which is located in a given address, you can use a send mediator with an address endpoint as below.
<
send
>
<
endpoint
>
<
address
uri
=
"http://localhost:9000/services/SimpleStockQuoteService"
/>
</
endpoint
>
</
send
>
as an alternative method, you can use the header mediator to route the message to a given endpoint as below.
- If you want to route a message to different end points according to the content of the message, you can use the switch mediator as below.
<
case
regex
=
"Credit"
>
<
send
>
<
endpoint
>
<
address
uri
=
"http://localhost:9000/services/CreditService"
/>
</
endpoint
>
</
send
>
</
case
>
<
case
regex
=
"Debit"
>
</
case
>
<
default
>
<log level="custom"/>
<
property
name
=
"warning message"
expression
=
"fn:concat('Wrong message type - ', //m0:getQuote/m0:request/m0:type)"
</log>
</
default
>
</
switch
>
- If you need to save the message payload in to a property such that it can be used in a later stage during the mediation processing, you can use enrich mediator as below.
<!-- Saving the entire message body in to a property -->
<
enrich
>
<
source
type
=
"body"
clone
=
"true"
/>
<
target
type
=
"property"
property
=
"REQUEST_PAYLOAD"
/>
</
enrich
>
<!-- Saving a part of the message body in to a property -->
<
enrich
>
clone
=
"true"
xpath
=
"//m0:getQuote/m0:request/m0:symbol/text()"
/>
<
target
type
=
"property"
property
=
"ORIGINAL_REQ"
/>
</
enrich
>
- If you need to transform the request message before going in to the back end server, you can use the payload factory mediator as below.
<
payloadFactory
>
<
format
>
<
m:request
>
<
m:symbol
>$1</
m:symbol
>
</
m:request
>
</
m:getQuote
>
</
format
>
<
args
>
</
args
>
</
payloadFactory
>
- If you need to convert a POX (REST) message in to SOAP message, you can use the following configuration.
<
send
>
<
endpoint
>
</
endpoint
>
</
send
>
- If you need to send a binary file with the SOAP message, you can use MTOM or SwA optimizations to your SOAP request as below.
<!-- Sending for MTOM endpoint -->
<
send
>
<
endpoint
>
</
endpoint
>
</
send
>
<!-- Sending for SwA endpoint -->
<
send
>
<
endpoint
>
<
address
uri
=
"http://localhost:9000/services/MTOMSwASampleService"
optimize
=
"swa"
/>
</
endpoint
>
</
send
>
2. Proxy services
- If you need to switch a message from SOAP to POX(REST), you can use the following configuration in the endpoint definition.
<
endpoint
>
</
endpoint
>
- You can use the following endpoint configuration to achieve dual channel invocation with in the WSO2 ESB
<
endpoint
>
<
enableAddressing
separateListener
=
"true"
/>
</
address
>
</
endpoint
>
- Service chaining can be achieved from specifying the receiving sequence within the send mediator as below. You will get the response from the first service call in to the second (receiving) sequence.
<
send
receive
=
"SimpleServiceSeq"
>
<
endpoint
>
</
send
>
- If you need to remove the security header of a request message, you can use the following configuration to send the message to a non-secured endpoint.
<
header
name
=
"wsse:Security"
action
=
"remove"
<
send
>
<
endpoint
>
</
endpoint
>
</
send
>
Comments
Post a Comment