JMS Messages - (Common Message id)

Hi,
     We have a legacy application which puts messages in queues. Unfortunately all the messages sent by this application have the same message ID (same ID for 1 batch of messages). When XI tries to read these messages from the queue it picks the first message and discards the rest (I guess became of the same msg id issue).
I have tried playing around the JMS adapter to accept messages with the same ID with no luck -
Here are some of things I tried -
1) Setting the message ID to all 4 options available
2) Setting the Timeout period for duplicate checks to 0 and  -1
Both the options did not work. Did any of you had to face a similar problem?
Regards,
Arvind R
Edited by: Arvind Ravindran on Dec 17, 2007 4:32 PM

Hi Aaron / all,
I saw you posting on at least 2 threads about that time. We have similar situation now with 3rd Party --> MQ --> PI --> ERP. We're on PI 7.4 SP 7 AEX.
I lately fondled with "Message Receive Wait Time" and put it from 100 to 1000 msec. However, as we cannot reproduce in Test we'll have another go at the end of the week.
Rest of the adapter is configured like so:
How did you solve your issue back then?
Many Thanks
Cheers
Jens

Similar Messages

  • Sync/Async bridge via JMS with FAULT messages

    Hello all,<br><br>
    I set up a sync/async bridge scenario with using of JMS communication channel (SAP - JMSReceiverCC - JMSServer and application - JMSSenderCC - SAP). The normal communication works fine.<br>
    But what we can not solve is the Fault Message handling. If there is a application error behind the JMS, a fault message is generated instead of proper application response and sent back to XI. Without any additional setup of JMS Sender CC the processing of the message ends with "MAPPING - EXCEPTION_DURING_EXECUTE", because normal "response mapping" is executed instead of "fault message mapping". This is correct behavior without any discussion.<br><br>
    [SAPhelp|http://help.sap.com/saphelp_nw70/helpdata/en/45/202845de34072ce10000000a155369/frameset.htm] says that there are 2 module parameters to be set : fault, faultNamespace. The description is rather vague, so let's see, what the "NotifyResponseBean" does, when parameters fault/faultNamespace are filled:<br><br>
    <pre>if(fault != null && faultNamespace != null)
      if(faultNamespace.equals("http://sap.com/xi/XI/System"))
        ((XIMessage)message1).setMessageClass(MessageClass.SYSTEM_ERROR);
        ((XIMessage)message1).setError(fault, "no additional information");
      } else
        ((XIMessage)message1).setMessageClass(MessageClass.APPLICATION_ERROR);
        ErrorInfo errorinfo = message1.createErrorInfo();
        errorinfo.setAttribute("ApplicationFaultInterface", fault);
        errorinfo.setAttribute("ApplicationFaultInterfaceNamespace", faultNamespace);
        errorinfo.setAttribute("ErrorCode", fault);
        errorinfo.setAttribute("AdditionalErrorText", "no additional information");
        message1.setErrorInfo(errorinfo);
    } else
      ((XIMessage)message1).setMessageClass(MessageClass.APPLICATION_RESPONSE);
    }</pre><br>
    The code is pretty straight forward so one could assume, that it's the name and namespace of inbound synchronnous message interface what is supposed to be filled in the values of each parameter. And from that kind of information SAP XI can evolve how to handle the response, actually the fault.<br>
    Unfortunatelly the real situation is different - every time the fault message is generated and sent back to XI, the response is correctly corelated with the request message, "WaitResponseBean" and "NotifyResponseBean" are finished correctly and the processing crashes in messaging class on following exception:<br><br>
    java.lang.NullPointerException at java.util.Hashtable.put(Hashtable.java:592) at
    com.sap.aii.messaging.mo.MessageContext.setAttribute(MessageContext.java:140) at
    com.sap.aii.adapter.xi.ms.XIMessage.updateHeaders(XIMessage.java:4244) at
    com.sap.aii.adapter.xi.ms.XIMessage.getTransportHeaders(XIMessage.java:570) at
    com.sap.aii.af.ra.ms.impl.ServerConnectionImpl.request(ServerConnectionImpl.java:212) at
    com.sap.aii.af.ra.ms.impl.core.transport.http.MessagingServlet.doPost(MessagingServlet.java:337) at ...
    <br><br>
    Is there anyone, who can put more light on JMS sync/async bridge fault handling ???
    <br><br>
    Thank you ...<br>
    Regards
    Tomas

    Hello again,
    I proceed in investigation little more, but the main problem has not been solved. I found that the problem is not even in WaitResponseBean (placed in JMCReceiverCC). This bean is woken up properly on base of proper CorrelationID. See the log:
    2009-10-15 11:00:33 Success WRB: entering WaitResponseBean
    2009-10-15 11:00:33 Success WRB: retrieving the message for f1ea1fc0-b96d-11de-9b68-00144f4acd86 ...
    2009-10-15 11:00:46 Success WRB: retrieved the message: ApplicationError
    2009-10-15 11:00:46 Success WRB: leaving WaitResponseBean
    I think, that the problem is somewhere within main messaging functionality. I suppose that on base of exception message:
    com.sap.aii.messaging.mo.MessageContext.setAttribute(MessageContext.java:140) at
    which is generated.
    Any ideas or comments ?
    Thank you in advance.
    Regards
    Tomas

  • Make jms queue forward messages to a proxy service

    Greetings!
    Here's my task. I have a pretty complex proxy service that routes the message to different web services. This proxy has a conditional branch. Now, what I needed to do was implement a JMS queue and fuse it with my proxy. I have successfully created a proxy and a business service that send messages to the JMS queue. However, the queue doesn't forward the messages to my routing proxy. My guess is that when the queue tries to send the message to my proxy, it encounters a conditional branch and doesn't know which branch to use. I have tried to put a log action in the default branch to determine if the message ends up there, but it doesn't.
    If anyone knows a way to forward messages from a JMS queue to a proxy with a conditional branch, please advise a solution.
    Thanks in advance,
    Andrew

    Hello Andrew,
    To communicate with JMS (either to poll JMS for dequing messages or to connect to JMS to enqueue a message), you have to use JMS transport in Oracle Service Bus.
    I am still not sure if this would have worked had I left the conditional branch in my Message Flow.It will work. You may try configuring it.
    Could you please be more specific as to where I can enable message tracking for my proxy service?You may enable message tracing in "Operational Settings" of a particular proxy/business service. Please refer sections "Configuring Operational Settings for Proxy Services" and "Configuring Operational Settings for Business Services" on below link to know more -
    http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/consolehelp/monitoring.html#wp1028056
    Should it be enabled for a specific proxy service or for all of them?You may enable it for all or for a particular service. It depends on requirement.
    Regards,
    Anuj

  • Scaleability of JMS Clients Receiving Messages

    How do you scale the receipt of messages in a JMS client for messages from the same topic?
    Given a topic, I would like to enable concurrent receipt and processing of messages by many concurrent listeners where a single message is only consumed once by any of the listeners. Even more, I would like to scale by having many clients with possibly many listeners servicing the same topic where a single message is only consumed/processed once.
    However, based on the documentation (see below) it appears sessions only enable a single thread of execution to be simultaneously running servicing incoming messages one at a time! And adding subscribers implies the delivery of a single message to each subscriber creating duplicate processing of the same message.
    Quote from JMS Tutorial: "The session used to create the message consumer serializes the execution of all message listeners registered with the session. At any time, only one of the session's message listeners is running."

    Hi vincegeorge,
    To be able to have several consumers actively using message listeners concurrently you could create each consumer on a different session. This would get around your problem of concurrent receipt and processing of messages when using message listeners.
    The second problem, ensuring that each message is received by only one TopicSubscriber is much more difficult. As each subscriber will receive every message that is sent to the particular topic then each subscriber will be sent a copy of that message. The only exception to this rule is if you have set a "message selector" for the consumer. If you knew exactly which subscribers were active at the publisher end then you could set a property on the message, e.g. SubscriberID=1, on the message and then each subscriber could set a message selector to say that they only wished to receive messages with the property SubscriberID set to their particular number. To notify the publisher which subscribers are active you could have a special destination that contains heartbeat messages informing everyone of their subscriberID.
    However, is it possible instead though that you could use a queue. This would be much easier to code (no message selector and no need to keep everyone informed of which subscriberID's are available) as the queue would ensure that only one receiver ever consumed the message.
    Hope this helps a little,
    Tom Jenkinson
    Arjuna Technologies Limited

  • JMS - remove persistent messages from memory

    Hi,
    I have a problem with RAM and JMS. I have to store many JMS-messages (overall size
    of more than 2GB). By default they are stored in RAM and in the database.
    How can I configure WL not to store all messages in RAM.

    Do you mean Time to Live Override value that we set in Overrides tab for the jms queue.Yes. Time to Live override can be used for that purpose.
    Do all messages get stored in persistent (file)store while a jms server is up or only the messages with certain status like "Pending" get stored in jms.If yes,do the >pending messages get automatically deleted once the messages are read by the client application.All persistent messages gets stored in the jms store which includes messages in Messages Current ( status - visible ) state.
    Some of the non persistent messages which gets paged out to free physical memory also end up in the store.
    Messages get deleted from the store, but file stores doesn't relieve the disk space to OS after deleting ie file stores never shrink in size automatically. You can even end up with a huge file store even though no messages are pending in any of the queues under it.

  • Foreign JMS Server vs Messaging bridge

    Could any body tell me which one is the best Whether Foreign JMS Server or Messaging bridge for connecting Weblogic to IBM MQ Series.I am trying to use foreign jms server but i dont know how to post the message to that queue i created in foreign jms server..

    Hi,
              For sending messages non-transactionally, foreign JMS server is sufficient. For sending messages transactionally using standard JTA transactions, the simplest way is to send them on the server and reference the foreign JMS through an EJB resource reference. See the the following FAQ for a walk-through of the various options, including guidance on when to use a bridge:
              http://e-docs.bea.com/wls/docs81/faq/interop.html
              Tom

  • JMS MQSERIES UNCOMMITTED MESSAGES

    Hi,
    I am having some problems when working with JMS over MQSeries 5.2.
    I am developing a program using JMS that tries to send messages to a MQSeries queue under unit of work. The program works rigth while the number of uncommited messages is not too high but when I try to send more tan 3000 messages the following error occurrs:
    Message: javax.jms.JMSException: MQJMS2007: failed to send message to MQ queue
    I was checking MQSeries Queue Manager configuration and I saw the maximum Number of Uncommited Messages in this Manager being this of 1000000 so the problem is not in this way. Apart of this, if a send all the messages without unit of work I do not have any trouble so far.
    Can anybody help at this point?
    Cheers

    can you post your code ?
    i am trying to send a message and i get the same error code ...
    My code is:
    import java.util.Properties;
    import javax.jms.DeliveryMode;
    import javax.jms.JMSException;
    import javax.jms.Message;
    import javax.jms.Queue;
    import javax.jms.QueueSender;
    import javax.jms.QueueSession;
    import javax.jms.TextMessage;
    import javax.jms.XAQueueConnection;
    import javax.jms.XAQueueConnectionFactory;
    import javax.jms.XAQueueSession;
    import javax.naming.Context;
    import javax.transaction.xa.XAResource;
    import org.apache.log4j.Logger;
    import es.banesto.utils.LeerProperties;
    * QSender se encarga de toda la operativa respecto al
    * envio de mensajes a colas MQ.
    public class QSender
         public static Logger log = Logger.getLogger("QSender");     
         protected String icf = "com.sun.jndi.fscontext.RefFSContextFactory";
         protected String rUrl = "file://D:/jms";
         protected String factoryName = "QCFADAPTADOR";
         protected String queueName = "INCIDENCIAS";
         private QueueSender sender = null ;
         private XAQueueConnection connection = null;
         private XAQueueSession session =      null;
         * Method leerPropiedades.
         * Lectura de los parametros de configuracion necesarios
         * @return boolean
         public boolean leerPropiedades()
              try
                   LeerProperties ref = new LeerProperties();
                   Properties props = ref.cargarArchivo("qsender.properties");
                   icf = (String) props.getProperty("icf");
                   rUrl = (String) props.getProperty("rUrl");
                   factoryName = (String) props.getProperty("factoryName");
                   return true;
              catch (Exception e)
                   log.info( "No se encontro el archivo qsender.properties");
                   log.info( e.getMessage());
              return false;
         * Method contextoQSender.
         * Determina el contexto JNDI a utilizar
         * @param colaSalida
         public void contextoQSender ( String colaSalida)
              try
                   queueName = colaSalida ;
                   Context ctx = GestorContextoJNDI.initJNDI(icf, rUrl);
                   XAQueueConnectionFactory factory =
                        (XAQueueConnectionFactory) ctx.lookup("A");
                   Queue queue = (Queue) ctx.lookup(queueName);
                   ctx.close();                         
                   this.connection = factory.createXAQueueConnection();                         
                   this.session = connection.createXAQueueSession();
                   QueueSession qsession = session.getQueueSession();
                   this.sender = qsession.createSender(queue);
              catch (JMSException e)
                   log.info ("Problema en contextoQSender ..");
                   Exception ee = e.getLinkedException();
                   log.info ( ee.getMessage());
                   log.info ("No se pudo conectar con la cola.");
                   log.info ("Revisar existencia, archivos de configuracion.");               
              catch (Exception e )
                   log.info ( e.getMessage());
                   log.info ("No se pudo conectar con la cola.");
                   log.info ("Revisar existencia, archivos de configuracion.");                              
         * Method send.
         * Envia un mensaje
         * @param p_mensaje
         public void send( String p_mensaje)
              TextMessage mensaje = null ;
              try
                   //Send messages
                   log.info ( "session.getTransacted() ->" +session.getTransacted());
                   mensaje = session.createTextMessage(p_mensaje);
    //               sender.send(mensaje,
    //                              DeliveryMode.PERSISTENT,
    //                              Message.DEFAULT_PRIORITY,
    //                              Message.DEFAULT_TIME_TO_LIVE);               
                   sender.send(mensaje);                              
                   session.commit();                              
              catch (JMSException e)
                   Exception ex = e.getLinkedException();               
                   log.info ("Error al enviar a cola :" + ex.getMessage());
                   try
                        Queue q= sender.getQueue();
                        log.fatal ("Nombre JMS de cola : " + q.getQueueName());
                   catch (JMSException ejmsx)
                        /* Nada que hacer */
                   log.fatal ("Mensaje por excepcion : ");               
                   log.fatal( e.getMessage());
                   log.info ( "El mensaje a enviar era: ");
                   log.info ("->" + p_mensaje + "<-");
              catch (Exception e)
                   try
                        session.rollback();
                   catch(JMSException ejms)
                        log.fatal ( ejms.getMessage());     
    //               log.info ("Error al enviar a cola :" );
    //               try
    //                    Queue q= sender.getQueue();
    //                    log.fatal ("Nombre JMS de cola : " + q.getQueueName());
    //               catch (JMSException ex)
    //                    /* Nada ... no se puedo resolver nombre ... */               
    //               log.fatal ("Mensaje por excepcion : ");               
    //               log.fatal( e.getMessage());
    //               log.info ( "El mensaje a enviar era: ");
    //               log.info ("->" + p_mensaje + "<-");
         * Method cerrarConexion.
         * Cierra conexion
         public void cerrarConexion ()
              try
                   if ( connection != null )
                        connection.close();
              catch (Exception e)
                   log.info("Error al cerra cola");
                   log.info (e.getMessage());
         * Method main.
         * @param args
         public static void main(String[] args)
              QSender ref = new QSender();
              ref.leerPropiedades();
              ref.contextoQSender("INCIDENCIAS");
              ref.send("hola");
         * Returns the log.
         * @return Logger
         public static Logger getLog()
              return log;
         * Returns the connection.
         * @return XAQueueConnection
         public XAQueueConnection getConnection()
              return connection;
         * Returns the factoryName.
         * @return String
         public String getFactoryName()
              return factoryName;
         * Returns the icf.
         * @return String
         public String getIcf()
              return icf;
         * Returns the queueName.
         * @return String
         public String getQueueName()
              return queueName;
         * Returns the rUrl.
         * @return String
         public String getRUrl()
              return rUrl;
         * Returns the sender.
         * @return QueueSender
         public QueueSender getSender()
              return sender;
         * Returns the session.
         * @return XAQueueSession
         public XAQueueSession getSession()
              return session;
         * Sets the log.
         * @param log The log to set
         public static void setLog(Logger log)
              QSender.log = log;
         * Sets the connection.
         * @param connection The connection to set
         public void setConnection(XAQueueConnection connection)
              this.connection = connection;
         * Sets the factoryName.
         * @param factoryName The factoryName to set
         public void setFactoryName(String factoryName)
              this.factoryName = factoryName;
         * Sets the icf.
         * @param icf The icf to set
         public void setIcf(String icf)
              this.icf = icf;
         * Sets the queueName.
         * @param queueName The queueName to set
         public void setQueueName(String queueName)
              this.queueName = queueName;
         * Sets the rUrl.
         * @param rUrl The rUrl to set
         public void setRUrl(String rUrl)
              this.rUrl = rUrl;
         * Sets the sender.
         * @param sender The sender to set
         public void setSender(QueueSender sender)
              this.sender = sender;
         * Sets the session.
         * @param session The session to set
         public void setSession(XAQueueSession session)
              this.session = session;
    [email protected]

  • JMS Patterns - Generic Message Handler

    Hi,
    For those interested in Java EE patterns, I've created a [blog post|http://jonathanjwright.wordpress.com/2009/08/12/jms-patterns-generic-message-handler/] outlining the use of a generic message handler to simplify MDB message type checking and payload extraction.
    Regards,
    Jonathan

    This requirement has now gone away after implementing SP21

  • -1 number of messages in messages application

    Hi,
    Did anybody see -1 number of messages in messages application notification ?
    I took screenshot quickly when i saw that. after that it disappear.
    Just curious what causes that.

    The only pure JMS solution is to create a QueueBrowser, iterate and count. Most JMS providers have a more efficient but proprietary API to do the same thing.
    Dwayne

  • HT1296 When I send a message on MESSAGES using my iPad2, they do not show up on my iPhone or my MacBook Mountain Lion messages. Did I miss a setting on any of the devices as I thought iCloud took care of syncing all of my devices

    When I send a message on MESSAGES using my iPad2, they do not show up on my iPhone or my MacBook Mountain Lion messages. Did I miss a setting on any of the devices as I thought iCloud took care of syncing all of my devices

    The Apple Support Communities are an international user to user technical support forum. As a man from Mexico, Spanish is my native tongue. I do not speak English very well, however, I do write in English with the aid of the Mac OS X spelling and grammar checks. I also live in a culture perhaps very very different from your own. When offering advice in the ASC, my comments are not meant to be anything more than helpful and certainly not to be taken as insults.
    http://www.macobserver.com/tmo/article/messages_why_your_chats_dont_show_across_ cross-device/

  • I cannot get my messages/text messages to work om my Hi.  I am sending this thru my iPad.  Respond and let me know you got it.  Fun fun fun.  .  I did go and try to another Apple ID different from my iPhone but it still will not work.  Can anyone help me?

    I cannot get my messages/text messages to work om my Hi.  I am sending this thru my iPad.  Respond and let me know you got it.  Fun fun fun.  .  I did go and try to another Apple ID different from my iPhone but it still will not work.  Can anyone help me?

    chicx wrote:
    This is the third time of writing this on your Apple Support Communities!
    Not with your current user id.
    Far too much uneccesary information in your post, which only confuses things, a vast amount!
    Let's start with iTunes.
    Have you updated iTunes to 11.1.5, because the previous version did appear to have an issue about seeing iPods?
    With iTunes 11.1.5 installed, look in Edit/Preferences/Devices, (or use the ALT key, followed by the E key and then the F key) and make sure that the box named Prevent iPods, iPhones and iPads from syncing automatically does not have a tick in the box.
    Once you have doen those two things, check to see if the iPod is seen by iTunes.
    chicx wrote:
    By the way, what does IOS mean? (I thought IO stood for operating system, but am flummoxed by the S on the end.
    Really?
    OS stands for Operating System. (In computer speak, IO means Input/Output.)
    iOS originally stood for iPhone Operating System, but it now refers to the iPod Touch and iPhone. The iPod Classic, which you have listed in your profile as your iPod, does not use iOS.
    I assume that you have been listening to the Podcast in your iTunes on the computer as you cannot transfer it to your iPod. It's what I'd do.

  • How to delete the messages in message monitoring

    hi all,
    can anyone tell me is there any way to delete the messages in message monitoring.

    Hi,
    Please Refer these Blogs
    /people/prasad.illapani/blog/2007/03/08/performance-tuning-checks-in-sap-exchange-infrastructure
    /people/prasad.illapani/blog/2007/04/20/performance-tuning-checks-in-sap-exchange-infrastructurexi-part-ii
    /people/prasad.illapani/blog/2007/04/27/performance-tuning-checks-in-sap-exchange-infrastructurexi-part-iii
    <b>Reward Points if Helpful</b>
    Regards
    sasi

  • Is there any way to change the default font for outgoing text-messages, in "Messages"? (OSX 10.10)

    Is there any way to change the default font for outgoing text-messages, in "Messages"?
    I can change it for one conversation, but then it resets to the default, tiny font.
    The preferences menu only lets me change the conversation font.
    (OSX 10.10)

    Hi,
    As you may remember there used to be a Messages pane to the Preferences where the Font and colour of the Balloons or background and the Font text colour could be changed.
    And there was a Format Menu for character, word and Sentence changes in the current IM or iMessage.
    Those have gone in Yosemite's version of Messages (Despite it retaining the designation of Messages 8 the same as Mavericks' version).
    All that can be done now is set the size of the font and this has been moved to the General Section of the Preferences.
    The Yosemite version has also been fixed to using the Balloons style of send and receiving any type of messages as well.
    Changing the Font would involved editing the Balloon.transcript file.
    10:34 pm      Saturday; December 13, 2014
    ​  iMac 2.5Ghz i5 2011 (Mavericks 10.9)
     G4/1GhzDual MDD (Leopard 10.5.8)
     MacBookPro 2Gb (Snow Leopard 10.6.8)
     Mac OS X (10.6.8),
     Couple of iPhones and an iPad

  • Is there a way to send a message with a photo attached using imessages. I am not able to send a photo to one of my contacts because I am sending the contact a message text messages. I don't want to send contacts text messages. I want to send them iMe

    Is there a way to send a message with a photo attached using imessages. I am not able to send a photo to one of my contacts because I am sending the contact a message text messages. I don't want to send contacts text messages. I want to send them iMessages.

    Kolyei, sorry for the late reply.
    Have your brother create a contact in his phone for himself. Inside his own contact, have him add his phone number and his iCloud address.
    Settings > Messages > Send & Receive Have your brother select both his phone number and email addresses where he would like to receive iMessages.

  • Error in local message system; message 009999000035 not complete

    Hello All.
    I have configured Service desk in SolMan 7.0 which has patch level 14 and also configured in Satellite systems. I am using SM_...._BACK RFC connection in BCOS_CUST table. The user used by SM_...._BACK have the following roles in SolMan
    SAP_SUPPDESK_CREATE,SAP_SV_FDB_NOTIF_BC_ADMIN
    and SAP_SV_FDB_NOTIF_BC_CREATE.
    However, when I try to create support message (Help --> Create support message) in satellite system, i am getting Error in local message system; message 009999000035 not complete.
    I have also checked for Product_ID parameter which is not existing.
    One important thing is, I can create support message in satellite system if I give SAP_ALL in that RFC user using in SM_...._BACK connection in SolMan.
    So, this shows clearly that it is an issue with role/authorization.
    Please suggest me !!
    Thanks in advance.
    Regards,
    Satish.

    Hmm not really. Profiles for the roles are also generated?
    Those roles/profiles should be sufficient to create support messages.
    Even though you assigned SAP_ALL and it worked afterwards I cannot imagine you got an auth. problem here anymore.
    When assigning SAP_ALL did you really assign SAP_ALL to the RFC user or did you assign another user (who got SAP_ALL auth.) to the RFC connection?
    The user who was logged on to the satellite system when the support messages have been created (with and without SAP_ALL assigned to the RFC user) has always been the same?
    Just to make sure: did you set NO_USER_CHECK = X in Sol Man tx: DNO_CUST04?

Maybe you are looking for