JMS Header: JMS Properties and Message Selector

Hi all
I´m using a JMS Adapter to consume messages from a JMS queue (a JMS adapter which create the BPEL instance when a message arrives).
The process must select messages which meet certain criterias, so I´m using Message Selector to filter the messages and only pick up the ones who interest me (If click on the "help" button on JDeveloper Wizard in the page you define Message Selector, you can see an example on how doing this).
So how can I select messages using values placed on JMS Properties, in the Message Selector?
For example, I set in the JMS Header:
JMSInboundHeadersAndProperties
--------JMSInboundProperties
----------------Property
-----------------------name = 'Country'
-----------------------value = 'Brazil'
The JMSAdapter must consume only messages that "Country" = "Brazil".
Thanks in advance.
Menezes

Yes
I am able to specify JMS Header and JMS Properties when producing a message. However I am not able to user "Message Selector" to filter messages based on JMS Properties information when consuming messages.
In the link you provide, there is an example on how to use Message Selector:
# (a copy from the link)
Message Selector
...for example, you can enter logic, such as:
* JMSType = 'car' AND color = 'blue' AND weight > 2500
* Country in ('UK', 'US', 'France')
I believe the example with "Country" is exactly what I need, but I can´t get it work.
I create the same example above, setting a property named "Country" in the JMSHeader, sending the message to a JMS Queue (BPEL Process #1) and try to comsume it on the Message Selector (BPEL Process#2), but JMSAdapter never consumes the message.
Thanks for your help.

Similar Messages

  • 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.

  • Setting Message selector

    Hi,
    I have java client which is requesting message asynchronously. Java client calls Proxy Service which in turn calls Business service which puts the request on topic. I need to put message selector in the message so that only the one which meets subscriber will be called. I am wondering how would I solve this in implementation of the the proxy service which java client is calling. Any pointers will be greatly appreciated.
    Thanks

    First I would publish the message to a JMS topicnot
    a JMS queue.
    Furthermore you should be able to control someof the
    JMS header when publishing the message, forexample
    the correlationid you can set in the $outbound
    variable in the routing actions. You can thenuse
    this correlationID to filter the appropriatemessage.
    Gregory Haardt
    ALSB Prg. Manager
    [email protected]
    Thanks Haardt!!
    Can we use the correlationID to filter using
    MessageSelector option in Proxy Service for
    appropriate message?I got this working. Thanks much!!!

  • Message Selector and Setting JMS Header Properties PL/SQL Enqueue

    Currently I am attempting to use the Message selector functionality. I just know know exactly how we need to set the property in PL/SQL when enqueuing. I also want to verify the syntax that I should use in the event that I am doing this incorrectly...
    The code I am using to test the enqueue is
    declare
    enqueue_options dbms_aq.enqueue_options_t;
    message_properties dbms_aq.message_properties_t;
    message_handle RAW(16);
    agent sys.aq$_agent := sys.aq$_agent('', null, null);
    message sys.aq$_jms_text_message;
    recipients DBMS_AQ.aq$_recipient_list_t;
    BEGIN
    message := sys.aq$_jms_text_message.construct;
    message.set_text('<ORDER><HEADER_ID>16992531</HEADER_ID></ORDER>');
    message.header.set_string_property('bamfilter','ORDER_ENTRY');
    dbms_aq.enqueue(queue_name => 'XX_OM_MONITOR_Q',
    enqueue_options => enqueue_options,
    message_properties => message_properties,
    payload => message,
    msgid => message_handle);
    COMMIT;
    END;
    we have tried a few other methods, but still to no avail...
    the syntax I believe for the selector in the ems should be bamfilter='ORDER_ENTRY'
    Any help would be great.
    The DB the Queue is locate is on 10g if that makes any difference...

    Yes
    I am able to specify JMS Header and JMS Properties when producing a message. However I am not able to user "Message Selector" to filter messages based on JMS Properties information when consuming messages.
    In the link you provide, there is an example on how to use Message Selector:
    # (a copy from the link)
    Message Selector
    ...for example, you can enter logic, such as:
    * JMSType = 'car' AND color = 'blue' AND weight > 2500
    * Country in ('UK', 'US', 'France')
    I believe the example with "Country" is exactly what I need, but I can´t get it work.
    I create the same example above, setting a property named "Country" in the JMSHeader, sending the message to a JMS Queue (BPEL Process #1) and try to comsume it on the Message Selector (BPEL Process#2), but JMSAdapter never consumes the message.
    Thanks for your help.

  • Trouble using JMS Message Selector and DCJMSMessageProperty0

    Hello Experts!
    My scenario is Mainframe => MQ => JMS Adapter => XI => SAP
    My MQ channel is communicating fine to XI and I've set the JMS adapter to JMS Compliant.
    I have multiple message types with consistent headers but varying data layouts that I need to route to different mapping objects. So it seems the best solution for this is JMS Message Selector based on reading a header value from one of the dynamic message properties.
    I've read SAP Notes and SAP Library and SDN Wiki articles about this configuration and I think its possible.
    http://help.sap.com/saphelp_nw04s/helpdata/en/10/b1b4c8575a6e47954ad63438d303e4/frameset.htm
    Note 856346 - J2EE JMS Adapter: Frequently Asked Questions (FAQ)
    Note 1086303 - XI JMS Adapter and IBM Websphere MQ: FAQ
    https://www.sdn.sap.com/irj/scn/wiki?path=/display/xi/usage%252bof%252bmessage%252bselector%252bfor%252bjms%252bsender%252badapter
    My mainframe sends an MQ message that includes some extra header information like
    field: ApplType  VALUE: 000000002                                              
    field: ApplName    VALUE: MIS056O          
    I configured my Communication Channel to set Adapter-Specific Message Attributes and also Additional JMS Message Properties to include ApplType and ApplName.
    However, I can only see some of the standard JMS header items such as CorrelationID, none of the additional ones.
    In RWB I see "JMS property 'ApplType' that corresponds to dynamic header 'DCJMSMessageProperty0' is missing from JMS message 'ID:f2f0f0f9f0f4f2f1f0f9f1f5f5f3f7f44040404040404040'; consequently it cannot be added to XI message 'e136a6e8-8580-4adc-2007-9ccab93f1ef4' as a dynamic header"
    Can anyone with some experience doing this help me see if I'm missing a trick somewhere? How can I see where this information is being dropped? Could it be when MQ is handing to JMS?
    Many thanks,
    Aaron

    After sifting through some IBM documentation I found that the PutApplName field actually maps to JMS name JMSXAppID. So after adding this to my Additional JMS Message Properties list I get the dynamic JMS message property I need for sorting out the messages.
    http://publib.boulder.ibm.com/infocenter/wmqv6/v6r0/topic/com.ibm.mq.csqzaw.doc/uj25450_.htm

  • JMS message selector

    hi there,
    any one used JMS message selector field in the JMS sender adapter. I want to filter out messages that are relevant for various interfaces. where do i set the filter value. i read java docs, it says the filter is possible for message header and properties. the weblog on sdn is not exactly clear and it doesn't work either.
    thx

    Ya you can go ahead with it right ??? See it says you can filter on the basis of header info and its properties , so header info will have originating source info. Its worthful to use it that way . Please clarify if i am wrong , i think thats what u require filter msg on basis of interface for what you are using the adapter.
    ref : http://java.sun.com/j2ee/sdk_1.3/techdocs/api/index.html
    ref : http://help.sap.com/saphelp_nw70/helpdata/EN/45/20d245ceff2b35e10000000a1553f7/frameset.htm
    I just tried , see if it helps , or i am wrong in getting your question
    If helpful please award points
    Abhishek

  • JMS/AQ: Setting properties for JMS message using PL/SQL

    I have created a procedure in PL/SQL that uses JMS messages, and now I need to include a property so that the subscriber can use a message selector to filter out unwanted messages. Is this possible using PL/SQL?
    A previous post said: "... But you can have properties in the message payload itself and also define selectors on the message content ...". But I looked at Sun's tutorial and there it said: "A message selector cannot select messages on the basis of the content of the message body."
    I have 300 different screens and messages apply only to one screen at a time. When the user is looking at screen 'A' I want him to only recieve messages that apply to screen 'A'. I thought I would do this with message selector, but is there any other way?
    Here is my code(borrowed from an earlier post)
    PROCEDURE ENQUEUE_JMS_MESSAGE AS
    BEGIN
    DECLARE
    Enqueue_options DBMS_AQ.enqueue_options_t;
    Message_properties DBMS_AQ.message_properties_t;
    Message_handle RAW(16);
    User_prop_array SYS.AQ$_JMS_USERPROPARRAY;
    Agent SYS.AQ$_AGENT;
    Header SYS.AQ$_JMS_HEADER;
    Message SYS.AQ$_JMS_TEXT_MESSAGE;
    Message_text VARCHAR2(100);
    BEGIN
    Agent := SYS.AQ$_AGENT('',NULL,0);
    User_prop_array := SYS.AQ$_JMS_USERPROPARRAY();
    Header := SYS.AQ$_JMS_HEADER( Agent, '', 'aq1', '', '', '', User_prop_array);
    Message_text := 'Message 1 from PL/SQL';
    Message := SYS.AQ$_JMS_TEXT_MESSAGE(Header, LENGTH(Message_text), Message_text, NULL);
    DBMS_AQ.ENQUEUE(queue_name => 'tstopic',
    Enqueue_options => enqueue_options,
    Message_properties => message_properties,
    Payload => message,
    Msgid => message_handle);
    END;
    END;
    -Christer

    Thanks for the answer. I managed to set the Correlation id and retrieve it using getJMSCorrelationID(). But I did not manage to use the MessageSelector on it. I have used the Topicbrowser which is not part of the JMS standard? I tried to enqueue the messages using Java too and tried to use the topicbrowser on both JMSCorrelationID and user defined properties withou success. Is there some special requirements of the TopicBrowser?
    Enumeration messages;
    oracle.jms.TopicBrowser browser =tsess.createBrowser(topic, "TS", "JMSCorrelationID = 'TST'");
    int count = 0;
    messages = browser.getEnumeration();
    if(messages.hasMoreElements())
    System.out.println("message"); //never executed
    dtxtmsg = (TextMessage)(tsub1.receiveNoWait()) ; //returns a message
    String corrID = dtxtmsg.getJMSCorrelationID(); //returns: TST
    Thanks for your help so far...it would really save my day if you have some ideas on this too!
    -Christer

  • JMS Message Selector on Message Payload

    Hi,
    I have a requirement where in;
    A JMS adapter consumes messages from an AQ JMS Topic. We need to make selective dequeue from the Topic. Is that possible to make use of the message selector option on the 'message payload'?
    Message selector works on JMS Header and Properties as far as I know.
    Any insight on this would be of great help :-)
    Thanks,
    Manoj Nair.

    It's like almost a month to get a response for such a generic JMS functionality. Looks like the Oracle SOA user base is really low. Anyone with a working example reference.
    Thanks

  • A basic query with respect to using Message Selectors in JMS

    Hi
    When i am going MEssage Selectors topic in web , it seems very confusing for me .
    I have written a simple JMS Application based on Weblogic as my Queue .
    I have two Java Files one for Message Producer and another file acting as Message Consumer using MDB
    I have a basic TextMessage with some header properties in my Producer file .
    Please tell me in what file should i put MessageSelector ??.
    Thanks for reading .
    Please clarify my query on this .

    Thank you very much .
    I found the code of a MDB making useage of a Selector .
    *<message-driven>*
    *     <message-selector>shirtType = 'polo'</message-selector>*
    *     </message-driven>*
    Assume that i written a MDB that listens to particular type of Messages (Polo in this case ) .
    Please tell me what happens to other messages in the Queue that were never listened by the MDB .
    Thank you .

  • JMS header properties are null

    Hi all,
    At sending messages to the internal WLI event queue from a client application
    I get the following problem:
    I set a application specific jms header property via the setStringProperty method.
    An event node in the receiving workflow extracts the property with EventAttribute.
    The event node gets the message but the header property is always null. I tried
    various sorts of property names, none of them works. Only the real jms header
    names which are set by the send method give non null values, but I cannot set
    these in the client application.
    Any ideas?

    Hi All,
    I have got it working here is how i did it.
    - transport header add a user defined name and value, it get added to outbound transport header.
    - at receiving end. retrieve it using for/each loop for inbound header user properties.
    Regards,
    Amit

  • JMS Adapter setting the header data of MQ message

    Hi All,
    I need to set the properties in JMS adapter for setting the header data of MQ message.
    JMS_IBM_MQMD_Format = MQFMT_NONE.
    Thanks in advance
    Ravijeet

    Hi All,
    I am stuck in a typical XI issue.......I have a scenario where my input to XI is IDoc and output is xml message going to IBM MQ.
    The IDoc is sending some chineese character which is fine is SXMB_MONI Integration server and also fine in the payload of message monitoring, so feel the message is going fine from XI to MQ.
    But the receiver EDI system which is picking the message from MQ queue says the chinese characters are getting corrupted. They say that you need to set the additional properties in MQ header data
    JMS_IBM_MQMD_Format = MQFMT_NONE.
    How do I do this in communication channel for jms adapter ? How to I set the MQ header data in jms communication channel ?
    Thanks in advance
    Ravijeet
    Edited by: RAVIJEET DAS on May 12, 2009 8:27 AM
    Edited by: RAVIJEET DAS on May 12, 2009 8:27 AM

  • Static information to be added in  message header of the XI message  in JMS

    Hi Friends ,
    Is it possible to add some customer specific internal information to message header of the XI message in PI 7.1 level.. If so how ?
    customer wants to add some info and to verify whether it would be handled in PI itself or not..
    Business case :  SAP -
    > PI7.1 -
    > IBM MQ
    All inputs will be appreciated .
    Thanks.,
    V.Rangarajan

    Hi preetak ,
    Thanks for your info .Since i have not worked on JMS adapter
    As per the Link it says as follows
    If you want to set additional JMS message attributes, select Specify Additional JMS Message Properties (10 Maximum).
    ·        In the table, enter the Name and Java Type of the JMS message properties whose values are to be included in the message header of the XI message.
    Under Java Type, you define the JMS Java message type for the attribute in the created JMS message. The following are possible entries:
    boolean , init , String etc.,
    Question
    1. How to pass the value to this parameter  will it be XML file with parameter name and value ?
    2. Any other blogs to refer ?
    Thanks .,
    V.Rangarajan

  • Can JMS Message be filtered dynamically based on the JMS Header variable

    Hi All,
    We have a requirement to filter messages from an MQ (Queue) using the JMS Adapter.
    There is only one subscriber to this Queue.
    Can we use the Message Selector option using the same subscriber to pick different messages based on the context set.
    For example I have two BPEL instances running for the same BPEL process and both of them have to read messages from the same MQ Queue, say SampleQueue.
    The first BPEL instance need to pick the messages when JMSpriority = 1
    The second BPEL instance should pick the messages when JMSpriority = 2
    Is this possible? As the Message Selector in the examples given is expecting a literal on the right side of the expression.
    Ex : Country='UK' Color='Green' etc
    To put the question in a different way, can the right side of the expression in a message selector be a BPEL variable?
    Thanks

    Hi
    I have the same question. Basically, I want to match my response message with the request message. I am putting in an id in JMSCOrrelationID in the request. The applciation that send the response put the COrrelationId, I sent into the JMSMessageId. But now, I want to correlate my request and response? What is the best way to do this in BPEL?
    Can the right side be a variable? I want to say JMSMessageID = 'ID: ' + JMSCorrelationId.

  • JMS Adapter Message Selector Problem...

    Hi
    I have set the following in the invoke before producing the message and dropping on the queue
    <invoke name="Invoke_1" partnerLink="adapt"
    portType="ns1:Produce_Message_ptt"
    operation="Produce_Message"
    inputVariable="Invoke_1_Produce_Message_InputVariable"
    bpelx:inputHeaderVariable="Sender"/>
    On the receive side I have the message selector configured for the adapter as follows:
    <jca:operation
    ActivationSpec="oracle.tip.adapter.jms.inbound.JmsConsumeActivationSpec"
    DestinationName="dattjndi"
    UseMessageListener="false"
    MessageSelector="Sender=AdaptationRequest"PayloadType="TextMessage"
    OpaqueSchema="false" >
    </jca:operation>
    Where AdaptationRequest is the value for the Sender variable which will be used to filter the message. But this does not work. the messages are still not consumed. What could be the problem?
    Thanks,
    Anil

    did you check the message selector section on
    http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/jms/Message.html
    explains all the operators you can use and the correct syntax. Make a note of the case sensitivity.

  • JMS Sender adapter Message selector

    Does anyone know of a good blog where someone is showing how to use the JMS message selector option in the JMS sender channel?  I'd like a screenshot of what is actually typed into this field most of all.

    did you check the message selector section on
    http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/jms/Message.html
    explains all the operators you can use and the correct syntax. Make a note of the case sensitivity.

Maybe you are looking for

  • Help on inporting from external drive

    when I drag my imovie files to idvd from the external drive, it does not take, I see my options as 1. make them into quicktime movies and then drag them 2. install idvd to my external drive. Any thoughts, thanks

  • Wich one of these or any FM Transmitter's work with a NANO?

    I am looking for a good FM Transmitter and i saw this Monster iCarPlay Wireless FM Transmitter for Apple iPod with Dock Connection at Best Buy and i was woundering if it will work with a NANO, this transmitter is Ipod Mini compatible. If not then the

  • Best way to store text or word documents

    Hello Everybody! I am trying to decide upon the best method for storing a bunch of documents from floppies to an Oracle XE APEX database and I need advice on how to best approach this task. I can see storing these documents as a clob or blob field, b

  • A problem with a macbook retina when resuming from sleep.

    After many questions and a complete reinstall at an apple store I stil have the problem. When resuming from sleep, and sometimes seemingly at random, the machine swaps to a different application. I run several desktops full screen and it will swap to

  • All rac resource status is unknown only vip and asm is running fine

    i have just install oracle 10g clusterware and oracle software on RHEL 5 only asm and vip is working fine ..rest of the resource not working status is unknown [oracle@rac1 bin]$ ./crs_stat -t Name Type Target State Host ora....SM1.asm application ONL