Routing Node in JMS

Hi,
I am configuring some JMS scenarios. For establishing connection with JMS system the client provided me with IP address and port for the JMS systems.
Alongwith the above information the client also gave me Routing Node details for each of the JMS-system. Do we use this Routing Node information anywhere in SAP PI?
Thank you,
Pankaj.

Hi,
Ok. I was confused after searching on google. So it means that though Routing Node is a part of JMS communication it is not used/ required in SAP PI.
Thank you,
Pankaj.

Similar Messages

  • Route node and Service Call out in OSB

    In OSB for a composite Proxy service (PS) that has to call 3 external services in sequence- we make service call out for 1st and 2nd external services and for invoking the last external service we can use route node.
    Here technically PS is making web service calls to all the three external services. For the first two OSB uses service call outs and for the last one, route node is used.
    What is the difference in service callout and route node in invoking an external service?
    If route node is better in any ways why can't OSB come with route node type message flow action for all external service calls?
    Thanks

    HI there,
    I have the same scenario as yours, I have to call 3 external services using Service Callouts and i have no idea how to use service callouts, how to and what to configure in SOAP body OR Payload parameters.
    I have to call one service and then the response of the 1st service , i have to pass it as a request to the 2nd service, so on.
    Can u please share with me how i can do it and what will be the best approach for that.
    Thanks and Regards
    Piyush Kapoor

  • How to Confiure Route Node to do HTTP Post?

    Hi All,
    I am trying to create a messge flow that could do HTTP POST.
    I have a business service that can do HTTP POST.
    In the Messge flow of the proxy service, I created Route node.
    With in the route node, I have created an Assign request action to assign to content to $body variable.
    The problem here is content of the body variable should have <soap:Body> as the top level element otherwise it throws an exception.
    I don't want to use service callout because service call outs are synchornous. How can we solve this issue with route node?
    Thanks in adavance for the response.

    In the assign to $body xquery either use:
    <soap-env:Body>
    {$payload}
    </soap-env:Body>
    or
    <soap-env:Body>
    <ns1:myOperation>
    {$payload}
    </ns1:myOperation>
    </soap-env:Body>
    where soap-env is a predefined prefix and you have defined ns1.
    Also if you your services mix soap1.1 and soap1.2 you can get a similar error.
    For example if your proxy is soap1.1 and you assign a soap1.2 body in the main pipeline (and vice-versa) then you will get that error. In that case you would need to create the soap1.2 body inside the route node. Otherwise you can do it anywhere in the pipeline.

  • Doubts in Route node OSB

    Hi all,
    Service callout creates two variables for Request and Response , so when I use a Service callout I do a Xquery transform and assign it to the Request
    variable. Now how do I do this in a route node
    when I tried to assign using x query transform i get an error +"BEA-382040: Failed to set the value of context variable "body". Value must be an instance of+
    +{http://schemas.xmlsoap.org/soap/envelope/}Body".+ Do I have to manually type the xml and use replace activity and replace the body ?
    Thank You
    Arun

    Hi all,
    Actually i am also getting the same error and i have changed the node entire body to node contents, but it is not working for me..
    Scenario :
    Proxy build on my local WSDL, then Pipeline with 2 stages on request side,
    1st stage : I am doing transformation to change the request,which i am getting from the portal into the format understandable by the System, i will call in 2nd Stage, I am doing this by using Replace action XPath ( ./* ) in body with my Xquery.
    2nd Stage : I am assigning the same Xquery to a varable SAOPRequest and then I am calling the External Service using Service Callout and configuring SOAP Body, In that i am passing SOAPRequest variable which i created earlier as a SOAP Request Body and Response as a SOAP Response.
    Save all and when i test it it gives me the error +"BEA-382040: Failed to set the value of context variable "body". Value must be an instance of+ {http://schemas.xmlsoap.org/soap/envelope/}Body"
    Waiting for your valuable suggestion
    Thanks and Regards
    Piyush
    Edited by: user13140590 on Jun 3, 2010 6:30 AM

  • Your End Node is Connected To the Gateway Through a Mesh Router Node

    Dears,
    If we Have a Network of 32 Nodes ( 1 Gateway and 4 Mesh Routers and 28 End Nodes) I need To Know if It is Possible To Know that Your End Node is Connected To the Gateway through Which Mesh Router Node Programatically and When it is Self Heiling  ?, is It Possible To Know this Information ?
    BR
    Ahmed Abdulbaky
    InnoVision Systems

    Hey Matt,
    With regards to using more than 8 nodes per parent, this may be possible and I've seen systems where this seemed to work. However, the hardware is only tested and supported for up to 8 end nodes per parent.
    With regard to 8 end nodes being stranded when using a router and gateway, this shouldn't be occurring. Depending on your network topology, there are other possible reasons for this behavior. The following article discusses the basics of the WSN topology:
    Wireless Sensor Network Topologies and Mesh Networking
    http://zone.ni.com/devzone/cda/tut/p/id/11211
    When the node disconnects, is it the same node, a similar rotation of nodes, or random nodes that are being stranded? When the node becomes stranded, what's it signal strength? Are each of your nodes set for the same update rate in the project? These answers may provide clues as to what is causing this behavior. Hope this helps!
    --Ryan S.

  • OSB Routing Options for JMS Proxy

    Hello!
    My config:
    WS Proxy Service -> <jms queue> ->Proxy Service -> WS Service
    jms queue used for guaranteed delivery of msg. I wanna dynamically change retry interval and retry count.
    Does Configuration Routing Options in Proxy Service (Retry Interval and Retry Count) override default settings of queue?
    I tried to change JMS headers (JMS_BEA_DeliveryTime, JMS_BEA_RedeliveryLimit) via snippet Transport Headers, but all of these headers are not delivered.
    Any ideas?
    Thanks,
    lam
    Edited by: laaam on 17.05.2012 12:50

    laaam wrote:
    but all of these headers are not delivered.
    Edited by: laaam on 17.05.2012 12:50They should be delivered, I have a proxy that send JMS header using an insert operation of my expression "as first child of" */ctx:transport/ctx:request/tp:headers* "in variable" outbound.
    Cheers,
    Vlad

  • The JMS proxy service unable to route to another Proxy Service

    Hello,
    I have a JMS proxy service. Inside its pipeline, I am routing to another Proxy Service of Service Type "Messaging", protocol: "Local" & Request Message Type: "XML"
    It's printing the message correctly from inside the routing node in the pipeline of JMS proxy. However, it's not invoking the Proxy Service that I am routing to, since I am not seeing the log message that I am trying to print from inside the pipeline of Local Proxy. Could someone please point out the error in my configuration?
    Any help will be greatly appreciated.
    Thanks much,
    Mamta Kansal

    OSB/ALSB use the SOA Suite forum
    SOA Suite

  • Content Routing in JMS?.

    Hi All,
    Is content based routing possible in JMS queues?.
    If we have one sender JMS queue, and it posts 2 messages.. one with employee structure.. and other with bank information structure..
    with 2 separate structures for separate interfaces.. can XI communication channels pick up the message and route it to the correct interface?.
    If so is there something special that I need to impletement?.
    Please advise.
    Thanks!.

    Any thoughts on this?.
    Thanks.

  • How to insert function nodes in routing service xsl mapping?

    I have been struggling with this for some days now.
    I have requestId, versionNumber coming in as a part of xml.
    I accept this xml(xsd) in one routing node, But on the way out, I want to assign a value requestId+versionNumber(basically concatenate)+randomNumber to transitionId(a new variable).
    How do I introduce this function node in xsl mapping that can concatenate different values that come through?
    Also, how do I generate random numbers?
    Thanks in advance,
    vena

    This is fairly straight forward.
    First of all create a random number. You can do this inyour translation. On the Component Palette select Advanced Functions. There you have an option generate-id or generate-guid. Either of these will be unique. Drag this to the middle.
    You can now drag this to the transactionid. Now you need to create a concatanation. In the Component palatte go to String and drage concat to the middle. Create a link between this concat and the generate-id function. Now you should be able to drag an link from requestid and versionNumber to the concat. If if they are in the wrong order just cut and past in the code by double clicking the concat icon.
    Hope this helps
    cheers
    James

  • Routing data to multiple business services in ALSB

    Hi,
    I have a jms based proxy which receives xml type message.This proxy subscribes to a topic and based on jms header,control is transferred to appropriate branch in conditional branch.
    One of the branches receive this message and contents are given to 2 different xquery transformations.Output of these transformations are required to be given to 2 different wsdl based business service.
    The entire configuration is inside a pipeline pair.Since its not possible to have 2 route nodes,I have configured a stage and used 2 publish actions.Inside each of these publish actions,I have configured replace action.
    This configuration doesn't seem to invoke either of the service. I am not able to use Routing Table as both services have to be invoked everytime and there is no condition to specify.
    How do I invoke 2 different business services with data passed to these 2 services being different?
    Arti

    Use two servcie callouts-- with different pay load elements
    Even publish will work, but we have to populate $body with relevant data for each BS before invoking publish
    Manoj

  • JMS Proxy to Web Service Problem

    Hi All,
    I have a JMS proxy that routes messages to a web service. I have set the delivery failure parameters on the JMS queue. When a message is put onto the queue and there is a problem within the message flow proper, the message is retried the appropriate number of times and put onto the Error Destination queue as necessary. However, if there is a problem calling the web service, message delivery is NOT retried, the message is NOT put onto the Error Destination queue, and the message is lost. The web service itself isn't throwing a SOAP Fault, but the business service can't reach the web service (firewall issue). My Route Error Handler in the message flow is hit and it performs a Reply With Failure.
    Can anyone please explain to me if this is by design and, if so, why? Also, how does a person work around this? I need the message to be retried. I understand that a web service cannot participate in an XA transaction, but it seems to me any failure within the message flow should cause a retry on the JMS queue.
    Thanks.
    Edited by mvcg at 06/11/2008 1:57 PM

    You should remove the Route Node since it should only be used in HttpProxy.
    Instead use just the request pipeline for your routing.
    if (condition1)
    Service Callout (or publish) to Service1
    else if (condition2)
    Service Callout (or publish) to Service2
    else
    Rasie error?
    You shouldn't need to reply with failure. Any errors in the service callout or publish should go to exception handling if you use QoS exactly-once.

  • [OSB]JMS Business Service sending message with a given JMSCorrelationID

    Hi,
    Is it possible to send jms message with a given JMSCorrelationID in OSB? Just like use javax.jms.Message.setJMSCorrelationID() before sending.
    If yes, how to change the payload accordingly?
    Any help? Thanks in advance.

    Try Transport Headers action in request action route node (Add Action >> Communication >> Transport Headers).
    Then click on add headers and in name drop down select the JMSCorrelationID. In set Headers to expression select the value you want to put for JMSCorrelationID.

  • Consume JMS Unit-Of-Work message through OSB proxy service

    Hi,
    Anyone know how to consume a JMS Unit-Of-Work (UOW) message using an OSB Proxy Service of JMS type?
    I can submit a unit-of-work JMS message (which consists of multiple constituent messages) using an OSB proxy & business service combination and setting the UOW transport headers appropriately. I can also separately produce and consume Java objects via a JMS queue where the consumption is done via OSB proxy (of java request message type), but these aren't UOW messages.
    Apparently as soon as it is a UOW message then the message consumed is an ObjectMessage ArrayList and one has to use the "Java" request message type for the JMS consumer proxy, but I'm unsure of how to create the concurrent client jar to use it in the same proxy service's JMS transport configuration in order to output the ObjectMessage ArrayList (UOW message). 
    Ideally I'd like to consume a single UOW XML message via an OSB JMS proxy service.
    Any pointers would be appreciated.
    R

    Finally got this working!!
    For posterity: Needed to insert Java Object JMS messages on the OSB JMS producer (Business Service) side with correct UOW jms transport header set in route node. Then consume the Unit-Of-Work message on the other side via jms proxy service with "java" request message type, with appropriate jar containing the Object class as the "Client jar" in the JMS Transport configuration. In the same JMS consumer proxy I had to do a java callout, passing the contents of $body, using java.util.ArrayList and javax.jms.ObjectMessage, as input into a method (.. decodeJavaMessage(ArrayList<ObjectMessage> ...)). In this java callout class you can get to each individual ObjectMessage via typecasting the get() method on the Arraylist to (ObjectMessage) and then just typecast the getObject() on this Objectmessage into your original Java Class (same as what you inserted onto queue originally).
    Hope this saves someone some time in future!

  • OSB Dynamic Routing and Transaction Rollback

    Hi,
    I have implemented dynamic routing to different jms business services.
    That's the flow:
    1. I have a proxy service which is invoked via a message delivered to a jms queue(XA connection factory), this queue is configured with
    Error Destination, expiration policy redirect, redelivery limit 5 and redelivery delay override 100
    2. I use a dynamic routing action
    <ctx:route isProxy="false">
    <ctx:service>
    $businessServiceXXX
    </ctx:service>
    </ctx:route>
    where $businessServiceXXX is a variable to hold my target jms business service, its value depends on some incoming inbound headers.
    3. if the endpoint is not correct(business service endpoint is dynamic) I catch the error in a Error handler, I raise an Error but :
    THE MESSAGE IS NOT REDIRECTED TO THE ERROR QUEUE.
    I know I could solve the issue with another approach like an external table to capture(fix) the endpoints, but it won't be so flexible in terms of deployment capability.
    Any Ideas ?
    Thanks,
    T.

    Hi Tony,
    Tested this in ALSB 2.5 . Transaction rollbacks fine when error in dynamic routing. I am attaching the test JMS proxy we have used for this.
    We had XA enabled CF for JMS proxy service and target JMS BS. The dynamic route was configured in route node with no route error handler or service error handler. The test case was to pause the target JMS queue for production. We could see messages rolling back to the source queue and getting redelivered.
    Attaching the Sbconfig for this proxy. Proxy Name: Dynamic Routing
    <?xml version="1.0" encoding="UTF-8"?>
    <xml-fragment name="DynamicRouting">
    <ser:coreEntry isEnabled="true" isProxy="true" name="DynamicRouting" isAutoPublish="false" xmlns:ser="http://www.bea.com/wli/sb/services">
    <ser:description/>
    <ser:binding type="abstract XML"/>
    </ser:coreEntry>
    <ser:endpointConfig xmlns:ser="http://www.bea.com/wli/sb/services">
    <tran:provider-id xmlns:tran="http://www.bea.com/wli/sb/transports">jms</tran:provider-id>
    <tran:inbound xmlns:tran="http://www.bea.com/wli/sb/transports">true</tran:inbound>
    <tran:URI xmlns:tran="http://www.bea.com/wli/sb/transports">
    <env:value xmlns:env="http://www.bea.com/wli/config/env">jms://localhost:7001/XACF/InputQueue</env:value>
    </tran:URI>
    <tran:inbound-properties xmlns:tran="http://www.bea.com/wli/sb/transports"/>
    <tran:all-headers xmlns:tran="http://www.bea.com/wli/sb/transports">false</tran:all-headers>
    <tran:provider-specific xsi:type="jms:JmsEndPointConfiguration" xmlns:jms="http://www.bea.com/wli/sb/transports/jms" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <jms:is-queue>true</jms:is-queue>
    <jms:is-secure>false</jms:is-secure>
    <jms:inbound-properties>
    <jms:response-required>false</jms:response-required>
    </jms:inbound-properties>
    <jms:request-encoding>UTF-8</jms:request-encoding>
    </tran:provider-specific>
    </ser:endpointConfig>
    <ser:router xmlns:ser="http://www.bea.com/wli/sb/services">
    <con:pipeline name="PipelinePairNode1_request" type="request" xmlns:con="http://www.bea.com/wli/sb/pipeline/config">
    <con:stage name="Configuration">
    <con:comment/>
    <con:context/>
    <con:actions>
    <con1:assign varName="input" xmlns:con1="http://www.bea.com/wli/sb/stages/transform/config">
    <con1:expr>
    <con:xqueryText xmlns:con="http://www.bea.com/wli/sb/stages/config"><![CDATA[<root>
    <type value="jms">
              <service>DynamicRouting/BusinessService/JMS</service>
         </type>
         <type value="http">
         <service>DynamicRouting/BusinessService/HTTP</service>
         <operation>Test</operation>
         </type>
    </root>]]></con:xqueryText>
    </con1:expr>
    </con1:assign>
    </con:actions>
    </con:stage>
    </con:pipeline>
    <con:pipeline name="PipelinePairNode1_response" type="response" xmlns:con="http://www.bea.com/wli/sb/pipeline/config"/>
    <con:flow xmlns:con="http://www.bea.com/wli/sb/pipeline/config">
    <con:pipeline-node name="PipelinePairNode1">
    <con:request>PipelinePairNode1_request</con:request>
    <con:response>PipelinePairNode1_response</con:response>
    </con:pipeline-node>
    <con:route-node name="DynamicRoute">
    <con:comment/>
    <con:context/>
    <con:actions>
    <con1:dynamic-route xmlns:con1="http://www.bea.com/wli/sb/stages/routing/config">
    <con1:service>
    <con:xqueryText xmlns:con="http://www.bea.com/wli/sb/stages/config">&lt;ctx:route>
         &lt;ctx:service isProxy="false">{data($input/*:type[@value=$body/*:body/*:type/text()]/*:service)}&lt;/ctx:service>
              if($input/*:type[@value=$body/*:body/*:type/text()]/*:operation) then
                   &lt;ctx:operation>{data($input/*:type[@value=$body/*:body/*:type/text()]/*:operation)}&lt;/ctx:operation>
    else()
    &lt;/ctx:route></con:xqueryText>
    </con1:service>
    <con1:outboundTransform>
    <con2:routing-options xmlns:con2="http://www.bea.com/wli/sb/stages/transform/config">
    <con2:uriExpr>
    <con:xqueryText xmlns:con="http://www.bea.com/wli/sb/stages/config">$body/*:body/*:url/text()</con:xqueryText>
    </con2:uriExpr>
    </con2:routing-options>
    </con1:outboundTransform>
    <con1:responseTransform/>
    </con1:dynamic-route>
    </con:actions>
    </con:route-node>
    </con:flow>
    </ser:router>
    </xml-fragment>
    Regards,
    Atheek
    Edited by: atheek1 on 27-Apr-2010 19:48

  • OSB JMS Message Selector / Filter

    HTTP PS and JMS BS puts messages on WLS JMS Queue. We need consume some messages from the Queue based on payload content since interfaces for other messages may go Live in next year.
    JMS Message look like
    <Schools>
    <School>
    <Id></Id>
    <ServiceArea>100</ServiceArea>
    <Type></Type>
    </School>
    </Schools>
    We need to consume messages where ServiceArea = 100.
    Can you advise how to consume messages where ServiceArea = 100 ?
    I would appreciate your help.
    Thanks in advance.
    Kiran
    Edited by: 844345 on Mar 14, 2011 5:02 PM

    JMS message selector on message payload fields is not recommended and it will have performance implications. Instead you can design this in either of the 2 ways below
    1 - Modify the HTTP PS which publishes the message to set the JMSCorrerlationID header ( or any othe custom JMS property) with the value of Service Area. You can achieve this using Transport Header action in HTTP PS route node.
    For the JMS consumer proxy set a message selector on the JMS transport page to filter only messages belonging to this service area.
    2. Let the HTTP PS continue publishing all messages to the output queue. Have a new component in your design called a 'disaptcher' which reads all the message from the output queue, check service area tag and route messages belonging to particular area to an area specific queue. Have your jms consumer specific for service area 100 to listen to only this Area specific queue.

Maybe you are looking for