JMS Message tracking

Hi all

We use Weblogc 10.3.6 using JMS queues.

We're going into production soon, qe want to trigger an alert message if we have not received any messages in our queues for example 30 minutes or 1 hour?

How can I do? I tried to use WLDF but I couldn't find a way to solve this problem.

Thank you very much!!!

Hello

You can write a line of WLST script to browse or get the MBean of UDQ and monitor for any message that lands on it.

Once which is reached, you can present sleep for 5 min or 10 min or what is your nfr.

HTH

Sri

Tags: Fusion Middleware

Similar Questions

  • View the log files and message tracking

    Just our ES3300 running. Looked through the Administrator's guide and searched a bit, is there not another way to view a log of what happened through the system of having to download log files?

    Message tracking would be done in the audit.

    Is not necessary to download and browse through the newspapers unless your train to solve a problem.

  • How do enable you the message tracking?

    Hello!

    We want to check if this feature is available in the Cisco blocker.  Thanks in advance and appreciate your kind help!

    Best regards

    Fidel Serrano

    Hello Harold, Hello Fidel.

    additional configuration is not necessary after you enable the message tracking feature. So in this case, I recommend opening a support with the STAC file so that they can consider this if the tracking database is in operational condition and make the data are imported as expected.

    Thank you and best regards,

    Martin

  • A JMS message is not a property of the unity of the order and a unit of work property


    I received this message on my side Client of JMS:

    weblogic.jms.common.JMSException : A JMS message is not a property of the unity of the order and a unit of ownership of the work

    I put only the unit of work properties in what follows.  Don't know why he complains that I put together.

    Joe

    ***************************************************

    message.setStringProperty ("JMS_BEA_UnitOfWork", rMes.getPid ());

    message.setIntProperty ("JMS_BEA_UnitOfWorkSequenceNumber", rMes.getSequence ());

    message.setBooleanProperty ("JMS_BEA_IsUnitOfWorkEnd", rMes.isEnd ());

    } catch (Exception e) {}

    System.out.println ("Unit of work" + e.getMessage ());

    }

    queueSender.send (message, DeliveryMode.PERSISTENT, 7, 0);

    I think I found the answer.  While I was watching Oracle Oracle guru Jeff West of Youtube video, he suddenly appeared to me that I missed the series WL classes JMS.

    Import weblogic.jms.extensions.WLConnection;

    Import weblogic.jms.extensions.WLDestination;

    Import weblogic.jms.extensions.WLQueueSession;

    Import weblogic.jms.extensions.WLMessageFactory;

    Import weblogic.jms.extensions.WLMessageProducer;

    Import weblogic.jms.extensions.WLQueueSession;

    This is the code that actually works!  I changed to PUA, however, based on the characteristics of our company. Now the Weird message of "properties have PUA both UOW" disappeared!

    Joe

    *****************

    package test.viant.edi.translator.messaging.processor.images.impl;

    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayDeque;
    import java.util.Hashtable;
    to import java.util.Iterator;

    Import javax.jms.DeliveryMode;
    Import javax.jms.JMSException;
    Import javax.jms.Queue;
    Import javax.jms.QueueConnection;
    Import javax.jms.QueueConnectionFactory;
    Import javax.jms.QueueSender;
    Import javax.jms.QueueSession;
    Import javax.jms.Session;
    to import javax.jms.TextMessage;
    to import javax.naming.Context;
    Import javax.naming.InitialContext;
    Import javax.naming.NamingException;

    Import weblogic.jms.extensions.WLConnection;
    Import weblogic.jms.extensions.WLDestination;
    Import weblogic.jms.extensions.WLQueueSession;
    Import weblogic.jms.extensions.WLMessageFactory;
    Import weblogic.jms.extensions.WLMessageProducer;
    Import weblogic.jms.extensions.WLQueueSession;

    public class UOOProducer {}
    private static string = "-1" current group
    private static int currentSeq = 1;

    Public Shared Sub main (String [] args) {}

    Dim queueName = "jms/MsgProcSvc/gisInboundQueue";
    String queueConnectionFactoryName = "jms/MsgProcSvc/jmsMsgProcConnectionFactory";
    Context jndiContext = null;
    Factory Factory = null;
    WLConnection queueConnection = null;
    WLQueueSession queueSession = null;
    Queue queue = null;
    WLMessageProducer queueSender = null;
    TextMessage message = null;
     
    / * Set the environment for a connection to the OC4J instance * /.
    Hashtable env = new Hashtable();
    env.put (Context.INITIAL_CONTEXT_FACTORY,
    "weblogic.jndi.WLInitialContextFactory");
    env.put ("java.naming.rmi.security.manager", "Yes");
    env.put (Context.PROVIDER_URL, "t3: / / localhost:5557, localhost:5558" "");
    /*
    The value of the context object. * Search for the queue connection factory. *
    * Search for the JMS Destination.
    */
    try {}
    jndiContext = new InitialContext (env);
    Factory = jndiContext (Factory)
    . Lookup (queueConnectionFactoryName);
    queue = jndiContext.lookup (queueName) (tail);
    } catch (NamingException e) {}
    System.out.println ("JNDI lookup failed:" + try ());
    System.Exit (1);
    }
    /*
    To create the connection. * Create connection session. * Create
    * sender. To create text message. To send messages. Send some out of text
    the message at the end of the text messages. * Close the connection.
    */

    try {}
    queueConnection (WLConnection) = queueConnectionFactory.createQueueConnection ();
    queueSession (WLQueueSession) = queueConnection.createQueueSession (false,
    Session.AUTO_ACKNOWLEDGE);
    queueSender (WLMessageProducer) = queueSession.createSender (tail);
    message = queueSession.createTextMessage ();
      
      
    try {}
    Open the file
    FileInputStream fstream = new FileInputStream("U:\\114157\\testFile1.txt");
    BufferedReader br is new BufferedReader (new InputStreamReader (fstream));.

    String strLine;
    ArrayDeque messageDeque = null;
       
    Read the file line by line
    While ((strLine = br.readLine ())! = null) {}
    Print content on the console
    System.out.println (strLine);
    String pidOfLine = getpid(2) (strLine);
    EDIMessage em = new EDIMessage();
        
    If (! pidOfLine.Equals (currentGroup)) //If this is a new group or the beginning of the message
    {
         
    If (messageDeque! = null &! messageDeque.isEmpty ()) {}
    EM = (EDIMessage) messageDeque.removeLast ();
    em.setEnd (true);
    messageDeque.addLast (em);
          
    EDIMessage AFFECTS = null;
    The message group is now ready.
    for (Iterator itr = messageDeque.iterator (); itr.hasNext ();)  {
    AFFECTS = (EDIMessage) itr.next ();
    try {}
    message.setText (em.getMessage ());
    message.setStringProperty ("JMS_BEA_UnitOfOrder", rMes.getPid ());
    * message. SetStringProperty ("JMS_BEA_UnitOfWork", rMes.getPid ());
    message.setIntProperty ("JMS_BEA_UnitOfWorkSequenceNumber", rMes.getSequence ());
    message.setBooleanProperty ("JMS_BEA_IsUnitOfWorkEnd", rMes.isEnd ());
    String of PUA = message.getStringProperty ("JMS_BEA_UnitOfOrder");
    String uow = message.getStringProperty ("JMS_BEA_UnitOfWork");
    System.out.println ("PUA:" + PUA);
    System.out.println ("uow:" + uow) ;*/
            
    } catch (Exception e) {}
    System.out.println ("Unit of work" + e.getMessage ());
    }
    System.out.println ("before sending the message:" + AFFECTS + "\n");
    queueSender.send (message);
            
    }

    }
    current group = pidOfLine;
    currentSeq = 1;
    messageDeque = new ArrayDeque();
         
         
    }
        
    What is the new nest or not, fill these values
    em.setPid (pidOfLine);
    em.setSequence (currentSeq);
    em.setEnd (false);
    em.setMessage (strLine);
    messageDeque.addLast (em);
        
           
        
    }

    Close the input stream
    Br. Close();
    } catch (IOException ioe) {}
    System.out.println (ioe.getMessage ());
    }
      
      
    } catch (Throwable e) {}
    e.printStackTrace ();
    System.out.println ("Exception occurred:" + e.getMessage ());
    } {Finally
    If (queueConnection! = null) {}
    try {}
    queueConnection.close ();
    } catch (JMSException e) {}
    System.out.println ("error in closing:" + try ());
    }
    }
    }
    }

    private static String getpid(2) (String sampleString) {}
    int start = nthIndexOf (sampleString, "|", 4);
     
    System.out.println ("start =" + start);
    int end = nthIndexOf (sampleString, "|", 5);
    System.out.println ("end =" + end);
    Return sampleString.substring (start + 1, end);
    }

    public static int nthIndexOf (final String string, final string token
    final int index) {}
    int j = 0;

    for (int i = 0; i)< index;="" i++)="">
    j = string.indexOf (token, j + 1);
    If (j == - 1).
    break;
    }

    return j;
    }

    }

  • JMS message filtering

    Hello

    can we filter JMS message form



    Thank you

    I could not understand the question, but according to my knowledge, selector of JMS messages is static configuration and must have the exact value at the time of the design itself which is the way it currently works. What you're looking for is "way to assess the selection criteria based on the expression at the time of execution". I don't think that he is currently supported.

    If we descend into thinking more than why this behavior, then we can say that if we want to execute logic, so we have to instantiate who hold the variables and evaluate expressions of a thread, but Message selector is nothing, but subscription so property whenever a Subscriber is stored in the JMS server he hears message based on it and when something specific Vienna then only he initiated a thread for subscriber process further.

    What will be needed in your case, it's this Subscriber subscribe all messages and will initiate the thread and then reject the message based on the logic of the selector within the scope of the processing thread. I don't think it will be good idea because it will instantiate many unnecessary wires in a business solution. This will be equivalent to an if-else in the pipeline early condition to reject unwanted messages. The whole idea of having Message selector must give this responsibility to the subscription instead of the Subscriber. I don't think that selector messages JMS should work this way.

    I hope that I have understood the question correctly and especially the help of details mentioned.

    Kind regards

    Ankit

  • Reading at the OAG JMS message

    Hello

    I'm trying to read a message of IBM MQ and validate againist a schmea. I am able to read IBM MQ, but I get the error message when posting as below.

    30/Oct/2013:20:46:07.120 [230] fault nested ERROR: no content HTTP in the message:

    java.io.IOException: no content HTTP in the message

    at com.vordel.mime.XMLBody.locate(XMLBody.java:99)

    at com.vordel.mime.XMLBody.getDocument(XMLBody.java:86)

    at com.vordel.circuit.schema.SchemaValidationProcessor.invoke(SchemaValidationProcessor.java:205)

    at com.vordel.circuit.InvocationEngine.invokeFilter(InvocationEngine.java:160)

    at com.vordel.circuit.InvocationEngine.invokeCircuit(InvocationEngine.java:52)

    at com.vordel.circuit.InvocationEngine.processMessage(InvocationEngine.java:241)

    at com.vordel.dwe.jms.JMSConsumer.processMessage(JMSConsumer.java:170)

    at com.vordel.dwe.jms.JMSConsumer.run(JMSConsumer.java:321)

    at java.lang.Thread.run(Thread.java:662)

    Kind regards

    Ganesh


    Hello Stefen,

    Thanks a lot, with the input data (${jms.message.getText ()} I am able to read XML. JMS now validating schema works fine. reterive the filter element also works very well.)

    you saved my day!

    Kind regards

    Ganesh

  • Retrieving ID of the JMS Message using Java

    Hello

    I built a sequence flow which is JMS Producer (BPEl)-> Consumer (Bpel) JMS-> composite A Bpel, inserting database. Now, I deliberately blamed the bpel instance. now, I want to enter the instance bpelcomposite faulted consumer id which I was able to do, but also to retrieve the message id jms I have been unsuccessful.
    I imported the javax.jms.Message package and my code is as follows
    / public class FaultHandlingPOC implements IFaultRecoveryJavaClass {}

    {} public void handleRetrySuccess (IFaultRecoveryContext ctx)

    System.out.println ("this is for the success of the new attempt");

    handleFault (ctx);

    }
    public String handleFault (IFaultRecoveryContext ctx) {}
    BPELFaultRecoveryContextImpl bpelCtx = (BPELFaultRecoveryContextImpl) ctx;
    Message m = ctx (Message);
    System.out.println ("Instance Composite:" + bpelCtx.getCompositeInstanceId ());

    try {}
    System.out.println ("ID of Message JMS" + m.getJMSMessageID ());
    } catch (JMSException e) {}
    System.out.println ("insert failed");
    }

    return to "Rise again";
    }

    The error generated is class Cast Exception even if I am able to retrieve the Bpel composite instance id

    Help, please.

    You can not thrown another IFaultRecoveryContext thing, it's an Interface and it does not do anything:

    public interface IFaultRecoveryContext
    {

    public abstract String getIndex (int i);

    public abstract card getProperties();

    public abstract String getActionId();

    public abstract String getPolicyId();

    public abstract String getActivityType();

    public abstract String getActivityId();

    public abstract String getActivityName();

    public abstract String getWsdlLocation();

    public abstract String getPartnerLinkName();

    public abstract QName getPortType();

    public abstract String getCorrelationId();

    public abstract BPELFault getFault();

    public abstract BPELProcessId getProcessId();

    public abstract String getStatus();

    public abstract void setStatus (String s);

    public abstract String setTitle (String s);

    public abstract String getTitle();

    public abstract int getPriority();

    public abstract setPriority (int i) Sub;

    public abstract getInstanceId() long;

    public abstract Locator getLocator();

    public abstract void addAuditTrailEntry (String s, object obj);

    public abstract void addAuditTrailEntry (String s);

    public abstract void addAuditTrailEntry (Throwable throwable);

    public abstract Object getVariableData (String s)
    throw BPELFault;

    public abstract Object getVariableData (String s, String s1)
    throw BPELFault;

    public abstract Object getVariableData (String s, String s1, String s2)
    throw BPELFault;

    public abstract void setVariableData (String s, Object obj)
    throw BPELFault;

    public abstract void setVariableData (String s, String s1, Object obj)
    throw BPELFault;

    public abstract void setVariableData (String s, String s1, String s2, object obj)
    throw BPELFault;
    }

  • Treatment of JMS messages in order one after another

    It's my use case that I wan to implement in OSB.

    1. I have a queue that will receive the messages in the huge number of a single sender.
    2. I have a proxy that will read each message and process the message and send it out.

    In step 1, I want each message to be read in order and at step 2 end run, then I want to read the next message in the queue.

    I need to give an acknowledgement to JMS message processing is complete and it can make the next available message to the proxy.

    What is the best option to implement this use case?

    Concerning

    The WebLogic jms to order unit is the best approach for this.
    http://download.Oracle.com/docs/CD/E12840_01/WLS/docs103/JMS/uoo.html

  • JMS Messages, refusing to participate in JTA transactions

    I worked on this issue for several days, and I can't find a path.

    I have a situation where I have to write in the database and also to send a JMS message. I want both to work, or nothing works, so it's a simple application of JTA, so I think.

    The used JMS connection factory is located to participate in XA transactions (I checked that 10 times).

    I originally had a UserTransaction started and committed around these statements, but since that doesn't seem to work, I put all the code in an EJB with transaction required.

    Whatever it is, it does not the way I expected.

    I have a breakpoint in the MDB which receives the message, but also a breakpoint on the Publisher code, and the code immediately after him. I find whenever as soon as I didn't have the JMS publish, the breakpoint in stops MDB then, indicating that the JMS message has been sent, even if the transaction publishers is certainly not over - finally the debugger will return back to the line after the publication.

    I am sure that we have made repeatedly in the past, and it worked as I expect with transaction code works.

    Someone has ideas about obvious things to check to determine why the JMS message is outside the transaction? Or not so obvious...

    Thanks in advance,
    Ken clark

    Hi Ken,

    You reason - the use case is common, but there are has some pitfalls new users sometimes face.

    The results of tracing of breakpoint you are expected. Message from a sender goes to the JMS server while sending message is called. If the message is involved in the transaction, it is always sent, but it became visible to consumers until the transaction is subsequently committed.

    To ensure that a sent message is involved in a transaction:

    1. ensure that the connection factory is «activé XA»

    2. ensure that there is a transaction on the thread. For example: System.out.println ("MY TX" + weblogic.transaction.TransactionHelper.getTransactionHelper () .getTransaction ());

    3 - ensure that your connection.createSession () invoking past 'false' for the first parameter - not true! If true and that you do not use a resource ref, the session would then become a "transactional" session, and JMS messages will take part in an independent local transaction rather than the overall XA transaction

    4. If not using a WebLogic JMS to send, then you must make sure that WebLogic automatically entered the foreign seller send call in the WL TX. All that is needed is to use a standard JEE 'refers to a resource"to get him CF. rather than directly raising the CF foreign in the foreign JNDI provider. This enables WebLogic detect and wrap calls foreign seller of the application, which in turn allows the automatic registration. See the JMS WebLogic Interop FAQ for more information.

    4 b - If you use AQ - JMS to send, more work is required, since QA - JMS are quite unique among the JMS implementations. WL 10.3.1 and later provides features to simplify this work.

    See for a related FAQ [integrating remote JMS providers | http://download.oracle.com/docs/cd/E15523_01/web.1111/e13727/interop.htm#JMSPG553], and for resources info Ref see [support strengthened using WebLogic JMS with EJB and servlet | http://download.oracle.com/docs/cd/E15523_01/web.1111/e13727/j2ee.htm#g1329180] (especially the 9-5 example).

    Hope this helps,

    Tom

  • How to send a JMS Message to a process of BPM

    Hi all

    I have small question regarding the sending of JMS Message of a bpm process. Is it possible to send a bpm process JMS messages to another bpm process.

    I have a scenario in which I need to send a JMS message to a queue, where another process is listening on this queue, and upon receipt of the message in the queue that is created for the process instance.

    I know how to listen to the JMS message on the queue, but I did not how to send a message to a process JMS.

    Also can I create processes by sending Notification to the process instead of a JMS message. But the creative process isn't a subprocess i.e. a declaration can be addressed through different processes.


    Any information or the example in this respect would be useful.

    Thanks in advance

    Published by: user9945154 on April 22, 2009 19:46

    Hello
    Daniel already told you how to send a JMS message.

    To send messages between different processes, you can use the Notification component:
    http://download.Oracle.com/docs/CD/E13154_01/BPM/docs65/standard_components/Fuego/lib/notification/Notification_component.html

    To create an instance of another process, you can use the ProcessInstance:
    http://download.Oracle.com/docs/CD/E13154_01/BPM/docs65/standard_components/Fuego/lib/ProcessInstance/ProcessInstance_component.html

    If you want to create an instance of another process, I recommend you ProcessInstance component because the creation is done in the same transaction. That has advantages:
    1 - is much faster!
    2. it is performed in the same transaction. Thus, you will be sure that the instance has been created.
    3. you don't have to wait until the arrival of the notification. (Sometimes, this reduces the interprocess synchronization)

    Hope this helps,
    Ariel

  • JMS messages not go back

    Hi all

    I now have a case where I dequeue messages to a JMS queue and call several downstream services. The problem is that I use redelivery options in my bpel process incase of mistakes downstream services and restitution does not occur. From the console 'em, for the wrong instance id, I need manually restore the fault and automatic playback does not occur.

    Please help me.

    Thank you

    Hello

    You didn't mention what version of Oracle SOA do you use? Also please let us know if you are using an XA connection for the JMS adapter.

    Normally, you experience this problem when ' bpel.config.oneWayDeliveryPolicy ' is set to 'async.persist' in the file composite.xml.   Please check your composite.xml and change the value to ' sync ' (rebuild/modify your existing configuration plans).

    Please indicate whether the response is useful.

  • The command cluster JMS messages.

    Hi all

    We use Weblogic 10.3.6 and we have a cluster with 2 JMS servers.

    In our project, it is important to control the message that we receive...

    Does anyone know how to order messages in a cluster with multiple JMS servers?

    Thank you very much!

    Chiwatel,

    You can use the feature "unit-of-Order.  It will consolidate the messages into a single unit with regard to the processing order. He

    requires that all messages from this unit be treated sequentially in the order that they were created.

    For more information, see:

    http://docs.Oracle.com/CD/E14571_01/Web.1111/e13727/uoo.htm#JMSPG389

  • WebLogic JMS: Messages in the queue are not displayed correctly

    Hello

    I use business OSB (courier, query type = type of text and the answer = none) and I publish the message encoded in URL next to a JMS queue:

    * %3 C % 3Fxml % 20version % 3D % 221 *.


    then, when I discovered the message in the queue by using the Weblogic console it is shown as:

    * 00000000: 2533 4325 3346 786 d 6 c 25 3230 7665 7273 %3 C % 3Fxml % 20vers *.
    * 00000010: 696f 3344 2532 3231 2532 3225 2e30 6e25 *.

    Why these numbers come from the message when it is published to the queue.

    Kindly help me to understand this and how to solve the same.

    Thank you
    Kalpana.

    The numbers are just an artifact of the way in which the message is displayed by the console. They are a binary representation of the data from your channel.

    More precisely, it looks like the view you are using shows a binary representation, in hexadecimal, on the left side and an ASCII representation on the right side.

    for example

    "72" is ASCII hex for the 'r '.
    '73' is ASCII hex for "s".

    and, on the next line

    '69' is ASCII hex for 'i '.

    HTH,

    Tom

    Published by: Tom B on April 25, 2013 17:59

  • About JMS transfers the JMS Messages

    Hello

    In my organization, we have implemented weblogic 10.2.5, suddenly our JMS topics stopped before messages to subscribers, no idea?

    your help is very appreciated.

    Mansoor

    Kind regards.

    The problem might be a network, application, client or server problem. Your primary investigative tool includes your server log (look for the errors & warnings), thread dumps client & server (glance for blocked threads) and all the exceptions that can be thrown to your customers.

    A few questions that might help to refine the question:

    Several areas are involved?

    Do you use distributed topics?

    What is the maximum size of your messages?

    HTH,

    Tom

  • Values of 'State String' JMS Message

    Hello

    We have a java application to monitor and process messages in a set of JMS queues.

    We noticed that some messages do not appear in our Java program. However, when we use the weblogic console we are able to view the content of the message.

    The model only we've seen is that messages that work well in our program have a "string value of State" visible, while messages that do not appear in our program have a value 'string of State' ordered.

    (Note. We also tested using Hermes JMS and he can not see messages with the ordered either State channel).

    What is this attribute?
    Is there an API to access the messages in this State, (for example that the console uses)

    Our code uses the JMX call getMessage in the queue. We use Weblogic 10.3

    The "ORDERED" State indicates that the message is part of a group (or unit-of-Order). When a message is 'Ordered' status, it is not visible to the consumer.
    There's a getMessages() API on the JMSDestinationRuntimeMBean you can get all messages to a given State. If you specify the State as 0x7fffffff, you should be able to get all the messages.

Maybe you are looking for