Via OSB we have two methods of invocation to JMS queue and
topic (i) jms protocol (ii)JCA adapter. But in OSB jms protocol is always
preferred. We usually deals with XML or
Non-XML content while working with JMS queue and topic and there are some pre-defined
header properties for JMS queue and topic that are used for specific purpose.
Sometime we need to read extra parameters from JMS
queue/topic, these extra parameters are custom JMS header properties. We can read
custom header property for JMS queue in OSB.
Steps are to create proxy service that will read the message
from JMS queue, to create that right click on the folder and click on new and
choose proxy service option. Choose “Messaging service” as Service Type.
In Message Type configuration, select “Text” as Request
Message Type as we will read simple text message to test this use case and
choose “None” as Response Message Type as we are not sending any response back
once we read the message from JMS queue.
In Transport tab, choose jms from protocol drop-down as we
are dealing with JMS queue i.e. we need to read the message from JMS queue. In
Endpoint URI text box fill the required values for JMS endpoint URI, for this
use case we use default connection factory and name of JMS queue. Choose
default settings for all other tabs and save the business service.
Make sure that “Get All Header” option is set to yes. If we don’t select this option then we will not be able to read custom header property from JMS queue.
Now to read the JMS custom header property from inbound
variable, We can use below syntax via assign activity.
var1 = $inbound/ctx:transport/ctx:request/tp:headers/tp:user-header[@name='QueueDetail']/@value
Here QueueDetail is custom header property name.
Save your proxy service and deploy it to server. Now put
message to JMS queue along with custom header property. Proxy picks the message
and fetch the custom header property in var1 variable. Which we can print via
log activity on server.
No comments:
Post a Comment