Message payload logging for Uniform Distribute Queue

Hi All,
We have a requirement to log the message payload, of every jms message received in a Uniform Distribute Queue in Weblogic.
Please let us know how can we achieve this.
Thanks.

If you want to avoid use of the Path Service, then the alternative is to make the destination members highly available. This will help ensure that the host member for a particular UOO is up.
One approach to HA is to configure "service migration". For more information see the Automatic Service Migration white-paper at
http://www.oracle.com/technology/products/weblogic/pdf/weblogic-automatic-service-migration-whitepaper.pdf
In addition, I recommend referencing Best Practices for JMS Beginners and Advanced Users
http://docs.oracle.com/cd/E17904_01/web.1111/e13738/best_practice.htm#JMSAD455 to help with WL configuration in general.
Hope this helps,
Tom

Similar Messages

  • JMS Timestamp in a Uniform Distributed Queue on Weblogic Console

    Dear Experts,
    I should need a clarification on how JMS Timestamp is valorized in a Uniform Distributed Queue. I explain me better :
    I will use the JMS Timestamp to re-order messages fetched from the Uniform Distributed Queue. Is it reliable ? How can I synchronize the this JMS property to be sure it is not dependent from physical machine where Uniform Distributed Queue is deployed ?
    Thanks a lot,
    Mike

    Try posting this in the weblogic jms forum : WebLogic Server - JMS where you might get help from Tom Barnes who is the weblogic jms development team lead.
    As far as I know time synchronization across machines should be a routine task for system admins. We had windows environment , where it was done using windows time service. The time server was configured on the domain controller and the time service running on the windows nodes periodically resynchronized its time with that of the time server.

  • How to enable JMS logging to capture message body for Uniform Distributed Q

    Hi All,
    we need to log JMS message body for our PROD env. but we do not see any "All Body" option in JMSQueue-> logging for our Uniform Distributed Queue.
    Please let me know how can we achieve our requirement.
    Thanks in Advance.

    got the solution.
    This is a know bug - [ID 1377584.1]
    adding below parameters in config/jms file should do the requirement.:
    <message-logging-params>
    <message-logging-enabled>true</message-logging-enabled>
    <message-logging-format>%header%,JMSCorrelationID,JMSDeliveryMode,JMSDestination,JMSExpiration,JMSMessageID,JMSPriority,JMSRedelivered,JMSReplyTo,JMSTimestamp,JMSType,%properties%,JMSXDeliveryCount,JMSXUserID,JMS_BEA_DeliveryTime,JMS_BEA_RedeliveryLimit,JMS_BEA_UnitOfOrder,*%body%*</message-logging-format>
    </message-logging-params>
    Edited by: Bob on May 10, 2013 11:53 AM

  • JMS Uniform Distribute Queue Unit Of Order, problem when one node goes down

    Hi ,
    I have the following code which post a message (with Unit of Order set ) to a Uniform Distribute Queue in a cluster with two member servers (server1 and server2).
    --UDQ is targeted to a subdeployment that is mapped to two JMS servers pointing to each member servers
    --Connection Factory is using default targeting ( i tried mapping to Sub deployment also)
    javax.naming.InitialContext serverContext = new javax.naming.InitialContext();
    javax.jms.QueueConnectionFactory qConnFactory = (javax.jms.QueueConnectionFactory)serverContext.lookup(jmsQConnFactoryName);
    javax.jms.QueueConnection qConn = (javax.jms.QueueConnection)qConnFactory.createConnection();
    javax.jms.QueueSession qSession = qConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    javax.jms.Queue q = ( javax.jms.Queue)serverContext.lookup(jmsQName);
    weblogic.jms.extensions.WLMessageProducer qSender = (weblogic.jms.extensions.WLMessageProducer) qSession.createProducer(q);
    qSender.setUnitOfOrder("MyUnitOfOrder");
    javax.jms.ObjectMessage message = qSession.createObjectMessage();
    HashMap<String, Object> map = new HashMap<String, Object>();
    map.put("something", "SomeObject");
    message.setObject(map);
    qSender.send(message);
    } catch (Exception e) {           
    Steps followed:
    1. Post a message from "server1"
    2. Message picked up by "server2"
    3. Everything fine
    4. Shutdown "server2"
    5. Post a message from "server1"
    6. ERROR: "hashed member of MyAppJMSModule!MyDistributedQ is MyAppJMSModule!MyJMSServer-2@MyDistributedQ which is not available"
    WebLogic version : 10.3.5
    Is there a way (other than configuring Path Service ) to make this code work "with unit of order" for a UDQ even if some member servers go down ?
    Thanks very much for your time.

    If you want to avoid use of the Path Service, then the alternative is to make the destination members highly available. This will help ensure that the host member for a particular UOO is up.
    One approach to HA is to configure "service migration". For more information see the Automatic Service Migration white-paper at
    http://www.oracle.com/technology/products/weblogic/pdf/weblogic-automatic-service-migration-whitepaper.pdf
    In addition, I recommend referencing Best Practices for JMS Beginners and Advanced Users
    http://docs.oracle.com/cd/E17904_01/web.1111/e13738/best_practice.htm#JMSAD455 to help with WL configuration in general.
    Hope this helps,
    Tom

  • Uniform Distributed Queue - Delay in handing over to listener

    Hi,
    We have cluster of two managed servers. We have two physical destinations (queues) configured as uniform distributed queues. With this setup we observed that when a message is put in to the uniform distributed queue, it takes a while before it hands of to the consumer (message driven bean). This we are observing every time a message is delivered. Is there a configuration that we are missing that is causing this behavior?
    Thanks,

    Here are the answers
    How long is "a while"? How are you measuring the delay?
    It is usually around 5 mins. We are measuring the delay using wall clock timings (We have debug statements in the consumer. That are getting printed after 5 mins).Does your config.xml or JMS Module configuration have a "time-to-deliver-override/TimeToDeliverOverride" configured on a destination, or a "default-time-to-deliver/DefaultTimeToDeliver" configured on a connection factory, or does your app use the "setJMSDeliveryTime" extension?
    No. We have not overridden the any of these parameters. See below for jmsmodule.xmlDoes your sender or MDB app happen to have a "sleep( or wait(" encoded in it somewhere?
    No. :-)Did you enable transaction batching on the MDB?
    NoOr you hava you configured a batch delay somehow (this can happen if a SAF Agent or Bridge is in the flow)? No
    Are you using Error Destinations?
    No
    jms-module.xml
    <?xml version='1.0' encoding='UTF-8'?>
    <weblogic-jms xmlns="http://xmlns.oracle.com/weblogic/weblogic-jms" xmlns:sec="http://xmlns.oracle.com/weblogic/security" xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-jms http://xmlns.oracle.com/weblogic/weblogic-jms/1.1/weblogic-jms.xsd">
    <connection-factory name="inventoryWSQueueCF">
    <sub-deployment-name>inv_jms_server</sub-deployment-name>
    <jndi-name>inventoryWSQueueCF</jndi-name>
    <transaction-params>
    <xa-connection-factory-enabled>true</xa-connection-factory-enabled>
    </transaction-params>
    </connection-factory>
    <connection-factory name="inventoryTPQueueCF">
    <sub-deployment-name>inv_jms_server</sub-deployment-name>
    <jndi-name>inventoryTPQueueCF</jndi-name>
    <transaction-params>
    <xa-connection-factory-enabled>true</xa-connection-factory-enabled>
    </transaction-params>
    </connection-factory>
    <connection-factory name="inventoryWSQueueAlternateCF">
    <sub-deployment-name>inv_jms_server</sub-deployment-name>
    <jndi-name>inventoryWSQueueAlternateCF</jndi-name>
    <transaction-params>
    <xa-connection-factory-enabled>true</xa-connection-factory-enabled>
    </transaction-params>
    </connection-factory>
    <uniform-distributed-queue name="inventoryWSQueue">
    <sub-deployment-name>inv_jms_server</sub-deployment-name>
    <jndi-name>inventoryWSQueue</jndi-name>
    <load-balancing-policy>Round-Robin</load-balancing-policy>
    <forward-delay>10</forward-delay>
    </uniform-distributed-queue>
    <uniform-distributed-queue name="inventoryWSQueueAlternate">
    <sub-deployment-name>inv_jms_server</sub-deployment-name>
    <jndi-name>inventoryWSQueueAlternate</jndi-name>
    <load-balancing-policy>Round-Robin</load-balancing-policy>
    <forward-delay>10</forward-delay>
    </uniform-distributed-queue>
    <uniform-distributed-queue name="inventoryTPQueue">
    <sub-deployment-name>inv_jms_server</sub-deployment-name>
    <jndi-name>inventoryTPQueue</jndi-name>
    <load-balancing-policy>Round-Robin</load-balancing-policy>
    </uniform-distributed-queue>
    </weblogic-jms>
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  • API to list Uniform Distributed Queue JMS Servers

    Hi all,
    I posted this in the SOA suite forum but this one may be better.
    I am writing a POJO webservice to synchronously read a message from a JMS queue. Unfortunately the queue is actually a uniform distributed queue so I actually need to look for messages in each of the local queues.
    I have written code to find the JNDI names of the local queues as follows:
    StringArray DistribMemberNames = new StringArray();
    String ttt;
    ttt = JMSHelper.uddMemberJNDIName("IMPJMSServer_1", part1.getJNDIName());
    DistribMemberNames.add(ttt);
    ttt = JMSHelper.uddMemberJNDIName("IMPJMSServer_2", part1.getJNDIName());
    DistribMemberNames.add(ttt);
    This works fine but I have hard coded the names of the JMS Servers and this is bad practice. I need to find a method where I can take the JNDI name of the uniform distributed queue and find all the JMSServer names. I have been looking for days but I can’t find anywhere in the API documentation that describes this.
    Does anyone have any suggestions?
    Thanks
    Robert
    (I am using 11.1.1.5 on a clustered weblogic enviroment)

    Hi,
    I have managed to answer this question myself.
    I needed to create a context:
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
    m_jndiContext = new InitialContext(env);
    Look up the main runtime mbean
    MBeanServer server;
    server = (MBeanServer) m_jndiContext.lookup("java:comp/env/jmx/runtime");
    Navigate down the domain configuration to get the JMSServers
    ObjectName service = null;
    ObjectName domainConfiguration = null;
    ObjectName[] jmsServers = null;
    service = new ObjectName(
    "com.bea:Name=RuntimeService,"
    + "Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean");
    domainConfiguration = (ObjectName) server.getAttribute(service, "DomainConfiguration");
    jmsServers = (ObjectName[]) server.getAttribute(domainConfiguration, "JMSServers");
    For each server you can retrive it's name:
    for (int i = 0; i < length_serverRT; i++) {
    String jmsServerName = "";
    jmsServerName = (String) server.getAttribute(serverRT, "Name");
    I had to do some additional filtering for my own requirements
    Robert

  • Forward Delay on Uniform Distributed queues with no consumers

    Suppose you have a cluster with 2 members, and a uniform distributed queue targeted to the cluster. Messages are produced onto the queue by an application targeted to the cluster, so both distributed members should receive messages. Messages within the queues are consumed by a remote WL server which intermittantly connects ( with t3:// ).
    By default, the forward delay is disabled ( set to -1 ) on a queue, so no messages will be forwarded from a queue with no consumers to a queue that does have consumers. A load balancer in front of the cluster should result in the remote cluster's JMS consumer alternating its connection across the cluster.
    If the remote server is connecting to only a single node within the cluster, it will only consume messages from one queue, leaving the other queue's messages un-consumed. But if both queues are configured to use forward delay, and there are no consumers to either queue, will the messages be continuously forwarded back and forth between the queues?
    Or, once the forward delay has expired, will the queues wait for a consumer to show up and then forward all its messages at once?
    I'm wondering how much "sloshing" there's going to be between the nodes of the cluster, as messages are pushed back and forth between the queues.

    From the documentation, a distributed queue forward delay is:
    The amount of time (in seconds) that a distributed queue member with messages, but no consumers, will wait before forwarding its messages to other queue members that do have consumers.Therefore, messages will not forward if a consumer attaches before the configure idle period passes, or if there are no consumers on other queue members.
    I think one case where "Sloshing" would occur if all of the following were true: consumers are transitory and only exist for slightly more than the idle period, message rates are sufficiently high so that the consumer sometimes cannot keep up for significant periods of time, not all destinations are concurrently serviced by consumers, and the limited number of consumers that do exist frequently do not re-attach to the same member.
    Obligatory distributed queue best practice note: For the best performance, simplicity, HA, and message ordering support, it's generally a best practice to ensure that every member of a distributed queue is serviced by a consumer. WebLogic MDBs are specifically designed to handle this need simply and automatically.
    Tom
    Edited by: TomB on Apr 23, 2009 6:27 AM

  • Durable Subscriber for Uniform Distributed Topic

    Hi I created one Uniform distributed topic (UDT). And One Error topic which is also Uniform distributed topic (UDT) for the same Uniform distributed topic (UDT). Now i want all the error messages in error topic to persist. So i want to create one durable subscriber for error topic. For normal topic it is easy to create but how can i create durable sub scriber for Error Topic. Please suggest.

    Thank you Kalyan. But i don't think that will help. Or let me rephrase my question.
    Below are my observations for using Error topic for Uniform Distributed Topic (UDT) -
    1. Error topic for a UDT has to be a UDT, in the same subdeployment.
    2. It is not possible to create a durable subscriber for UDT from WLS console - there is no create button.
    We need durable subscriber to persist error messages. So as a work around I have created a dummy SOA process as a subscriber to the error UDT and turned the SOA process off.
    Do you have an idea if we can avoid creation of dummy subscriber and still persist messages in error topic (UDT) for distributed env?
    will the attribute value "Delivery Mode" = Persist help?

  • Uniform Distributed queue members

    When I create a uniform distributed queue, members are getting auto populated. Do I need to create members with same name in managed servers to work with uniform distributed queue?
    In case of weighted DQ I can create members and associate it with DQ.
    In case of uniform DQ, will it create members dynamically with same name on 2 managed servers? If creates dynamically(if we need not create explicitly) how can I monitor the messages in the queue members?
    Thanks
    Santhosh

    However, what if one of the members which is already associated with a consumer, and the consumer is killed after a period of time, will the messages from that member be transferred to other members with consumers?Yes.
    Tom

  • Printing out message history log for a specific co...

    I'm using Skype for Windows v 6.1.0.129 on a W7 PC.
    Is there a way within Skype itself to:
    Printout a message history log for a specific contact?
    If there is, what is the navigational steps to accomplish this task.
    If not, what is the best 'work around'.
    Thxs!

    I have the same problem as I needed the log for my Fiancee Visa application.
    I have just found this software that collates the skype logs.
    I then highlighted the names and dates that I wanted and saved and printed it out.
    http://www.nirsoft.net/utils/skype_log_view.html
    Hope it helps.

  • How to get Uniform distributed queue message counts with help of JMX

    Hi,
    Is there any way to get given queue message count, pending message counts using JMX. I can get all queue names and counts using JMX... after that i have to show only selected queue details.
    Thanks,
    -Som

    Hi,
    Following is the WLS snippet from an upcoming WLS JMS message management white paper that you can use to get the message statistics for a given destination.
    With appropriate command line parameters, this script can be used to poll and dump the statistics of any destination on a specified interval.
    Note that the WLST uses JMX API under the cover, so you can easily convert this into a pure JMX java program.
    Hope this helps.
    Kats
    WebLogic JMS Message Statistics Script for weblogic.WLST
    This script can be used for dumping message statistics of a given JMS Destination.
    Based on the arguments, the script creates can print out message statistics
    Usage: java weblogic.WLST msg_statistics.py [options]
    Options:
      username=...           username to connect to WebLogic Server       - defaults to "weblogic"
      password=...           password to connect to WebLogic Server       - defaults to "weblogic"
      url=...                Provider URL of the Administration Server    - defaults to "t3://localhost:7001"
      wlsServerName=...      WebLogic Server Name                         - defaults to "examplesServer"
      jmsServerName=...      JMS Server Name that hosts the destination   - defaults to "examplesJMSServer"
      jmsModuleName=...      JMS Module Name that defines the destination - defaults to "examples-jms"
      jmsDestinationName=... JMS Destination name to get the statistics   - defaults to "exampleQueue"
      pollingIntervalInSeconds=... Time interval between statistics dump  - defaults to "60 secs"
      redirectStdout=...     File name to redirect the stdout of WLST     - defaults to no redirect and the results wil be printed out to stdout.
      help                   Prints out this usage help
    Note that all the defaults are set based WebLogic Examples domain that is part of WebLogic Server installation.
    The "examples" server can be started from "C:/Oracle/Middleware/wlserver_10.3/samples/domains/wl_server" using startWebLogic.sh
    To try this script OOTB, start the "examples" server and run the JMS sample as described below.
    cd :/Oracle/Middleware/wlserver_10.3/samples/domains/wl_server/bin
    . ./setDomainEnv.sh
    cd $WL_HOME/samples/server/examples/src/examples/jms/queue
    javac -d . *.java
    export CLASSPATH=".;$CLASSPATH"
    java examples.jms.queue.QueueSend t3://localhost:7001
    Follow the prompts to populate the queue
    Examples:
      msg_statistics.py - Dump the message statistics of the exampleQueue for every 1 min
      msg_statistics.py user=weblogic pass=weblogic url=t3://localhost:7001
                          wlsServerName=examplesServer jmsServerName=examplesJMSServer
                    jmsModuleName=examples-jms jmsDestinationName=exampleQueue
                    pollingIntervalInSeconds=30
    For more details on JMS Message Management using WLST, see "WebLogic JMS Message Management In a Nutshell" whitepaper.
    from weblogic.jms.extensions import JMSMessageInfo
    from weblogic.messaging.kernel import Cursor
    from javax.jms import TextMessage
    from javax.jms import DeliveryMode
    from java.io import ByteArrayOutputStream
    from java.io import StringBufferInputStream
    from java.util import Properties
    from java.util import Date
    from java.lang import *
    import jarray
    import sys
    # shows_messages() definition
    def dump_statistics(wlsServerName, jmsServerName, jmsModuleName, jmsDestinationName, pollingIntervalInSeconds):
      pollingIntervalInMillis = long(pollingIntervalInSeconds) * 1000L
      domainRuntime()
      cd ('ServerRuntimes')
      spath = wlsServerName + "/JMSRuntime/" + wlsServerName +".jms"
      cd (spath)
      fullDestName=jmsServerName+'/Destinations/'+jmsModuleName +'!'+jmsDestinationName
      cdPathForDestName='JMSServers/'+ fullDestName
      cd (cdPathForDestName)
      while 1:
        print "========================================================================================================================"
        print "Messages     Messages      Messages      Messages      Bytes        Bytes        Bytes           Bytes    "
        print "Current       Pending       High          Received      Current      Pending      High            Received "
        print "Count         Count         Count         Count         Count        Count        Count           Count    "
        print "========================================================================================================================"
        s = "%8d     %8d     %8d     %8d     %8d     %8d     %8d     %d" % (cmo.getMessagesCurrentCount(), cmo.getMessagesPendingCount(), cmo.getMessagesHighCount(), cmo.getMessagesReceivedCount(), cmo.getBytesCurrentCount(), cmo.getBytesPendingCount(), cmo.getBytesHighCount(), cmo.getBytesReceivedCount())
        print s
        print ''
        Thread.sleep(long(pollingIntervalInMillis))
    # Function to handle script arguments of the variety 'n=v', where
    # arguments are placed into a dictionary of nv pairs and returned
    # to the caller
    def argsToDict(args):
      d = {}
      for arg in args:
        #print "arg: " + arg
        pair = arg.split('=', 1)
        #print "pair: " + str(pair)
        if len(pair) == 2:
          # binary argument, store as key pair
          key = pair[0]
          val = pair[1]
          d[key] = val
        else:
          # Unary argument, story with empty (non-null) key
          d[arg] = ''
      print "Arguments: " + str(d)
      return d
    # Returns the value found in the provided map, at the location
    # specified by 'key'; if no entry exists in the map for 'key',
    # the provided default is returned.
    def getValue(dict, key, default=None):
      ret = default
      if dict is not None:
        try:
          ret=dict[key]
        except KeyError:
          pass
      return ret
    # Connect to the target server specified in the provide args
    def connectIfNecessary(argsDict=None):
      # connect if necessary
      if connected == "false":
        user=getValue(argsDict, "user", "weblogic")
        passwd=getValue(argsDict, "pass", "weblogic")
        url=getValue(argsDict, "url", "t3://localhost:7001")
        print "Connecting with [" + user + "," + passwd + "," + url + "]"
        connect(user,passwd,url)
    # Retrieve a positional argument if it exists; if not,
    # the provided default is returned.
    # Params:
    # pos   The integer location in sys.argv of the parameter
    # default  The default value to return if the parameter does not exist
    # returns the value at sys.argv[pos], or the provided default if necesssary
    def getPositionalArgument(pos, default):
      value=None
      try:
        value=sys.argv[pos]
      except:
        value=default
      return value
    # Main
    argsDict = argsToDict(sys.argv)
    redirectOutputFileName = getValue(argsDict, "redirectStdout")
    if redirectOutputFileName is None:
      pass
    else:
      redirect(redirectOutputFileName, 'false')
      print "The output from this program gets written into file " + redirectOutputFileName
      sys.stdout = open(redirectOutputFileName, "w")
    isHelp = getValue(argsDict, "help")
    if isHelp is None:
      pass
    else:
      print __doc__
      exit()
    connectIfNecessary(argsDict)
    wlsServerName = getValue(argsDict, "wlsServerName", "examplesServer")
    jmsServerName = getValue(argsDict, "jmsServerName", "examplesJMSServer")
    jmsModuleName = getValue(argsDict, "jmsModuleName", "examples-jms") 
    jmsDestinationName = getValue(argsDict, "jmsDestinationName", "exampleQueue")
    pollingIntervalInSeconds = getValue(argsDict, "pollingIntervalInSeconds", "60")
    dump_statistics(wlsServerName, jmsServerName, jmsModuleName, jmsDestinationName, pollingIntervalInSeconds)
    disconnect()
    print 'End of script ...'
    exit() 

  • Redirecting failed messages to other consumers of distributed queue

    Hi,
    We have a simple cluster with two servers A and B, each hosting one MDB whose task is to consume message from a distributed queue and forward them to an EIS via a JCA resource adapter. Server B acts as a failover server. If the resource adapter is unable to deliver the message, the MDB will throw a runtime exception and the message will therefore be redelivered. In order to achieve high-availability, we have configured the distributed queue to send the redelivered message to an error destination (dead-letter-queue DLQ). The DLQ again has another instance of the MDB as a consumer with a different resource adapter.
    Using DLQs is working fine as a high-availability mechanism when the MDB is unable to deliver the message to the EIS, but is this a common or valid approach?
    An alternative to using DLQs would be to configure weblogic to send redelivered message to other consumers on the distributed queue. The problem we have is that the failed message always gets redelivered to the same MDB (i.e. the MDB which consumes messages but throws an exception because the resource adapter fails). Is it somehow possible to configure the MDB or even change the MDB code to notify weblogic to send the failed message to another consumer of the distributed queue? Would the MDB be able to disconnect the JMS connection when throwing the exception and if so, would the disconnection cause the application server to deliver the message to another consumer?
    Many thanks

    Thanks Tom,
    Setting the distributed-destination-connection property to EveryMember seems to be exactly what we need to allow other distributed queue member to consume the message which has been put back on the queue after a rollback. In order to ensure that it won't be the same MDB consuming the failed message again, we would have to temporarily suspend the MDB. From what I read, one approach is to sleep the MDB after throwing the runtime exception (but is this possible, i.e. is it not going to interrupt the onMessage before going to sleep?). I also read that there is a new property from WLS 9.0 onwards to automatically stop the MDB for a certain time after an exception has ocurred, how can I configure this? Are we also going to have to set the MDB pool size to 1 in order to ensure that the message gets consumed by an MDB on a different server?
    We have also tried to use a non-collocated approach instead using a collocated approach with distributed queues but we end up with the same problem that a message does not get redelivered to MDBs on other servers after a runtime exception has been thrown.
    Thanks a lot

  • Message Tracking logs for secondary smtp address

    Hi,
    There are many people sending mails to secondary smtp address instead of primary smtp address. How can i pull the report of message tracking logs if they sent it to secondary smtp address using get-messagetrackinglog cmdlet?
    Sankar M http://messagingdevelopment.blogspot.in/

    Hi Sankar,
    If I don't understand your description, it seems that you want to get the message tracking log on an mailbox with primary SMTP address and secondary SMTP address.
    If it is the case, please add both primary SMTP address and secondary SMTP address to the "Recipients" parameter. More details to see:
    http://technet.microsoft.com/en-us/library/aa997573(v=exchg.150).aspx
    Thanks
    Mavis Huang
    TechNet Community Support

  • Specifying message delivery time for a JMS queue

              Guys,
              Can anyone tell me as to if it possible to specify message delivery from a JMS
              queue to a listening MDB at a specified interval in weblogic . I mean I need
              to post messages to the JMS queue but I need the messages to be delivered to the
              MDB's after lets say 30 seconds .
              How can I do it using the weblogic console ?? Which property do i need to change
              Please advise.
              Thanks
              Kar
              

    Hi,
              Message delivery time can be set programmatically,
              or through a console override. In your case, set it via
              the console with the value "30000".
              This feature has been available since 6.1, and is a
              JMS extension.
              Here is the link to the 8.1 documentation:
              http://edocs.bea.com/wls/docs81/jms/implement.html#1235262
              And for a full list of WL JMS features, see here:
              http://edocs.bea.com/wls/docs81/jms/intro.html#jms_features
              Tom
              kar piyush wrote:
              > Guys,
              >
              > Can anyone tell me as to if it possible to specify message delivery from a JMS
              > queue to a listening MDB at a specified interval in weblogic . I mean I need
              > to post messages to the JMS queue but I need the messages to be delivered to the
              > MDB's after lets say 30 seconds .
              >
              > How can I do it using the weblogic console ?? Which property do i need to change
              > ?
              >
              > Please advise.
              >
              > Thanks
              >
              > Kar
              >
              >
              

  • Message Listener Listening to only 1 queue in distributed queue setup!

    Hi guys,
    This may be the wrong place to place this post.
    We created a message system with OSB proxies moving messages back and forth between distributed queues. After all this shuffling messages around, the messages end up in a distributed queue where a java client is waiting to pick up results. Our problem is, it's only reading one of the queues in this distributed queue.
    The following is the code segment that waits for the message with a specific id:
    public Message receiveMessage(String queueName, String messageId) throws FrameworkException {
    BytesMessage bytesMessage = null;
    if (null == queueSession) {
    init();
    try {
    Queue receiveQueue = lookupQueue(queueName);
    QueueReceiver queueReceiver = null;
    String selector =null;
    if (null == messageId) {
    queueReceiver = queueSession.createReceiver(receiveQueue);
    } else {
    selector = "JMSCorrelationID = '" + messageId + "'";
    queueReceiver = queueSession.createReceiver(receiveQueue, selector);
    bytesMessage =(BytesMessage) queueReceiver.receive();
    queueReceiver.close();
    }catch{...
    Will queueReceiver.receive() listen to every member in a distributed queue (spread across 2 managed servers in a cluster)?
    Thanks alot

    Yes, the uniform distributed queue should be available on all targeted servers, providing that the jms module has been targeted to all of the OSB servers, and that your java app ( .war file? ) is targeted to both.
    You can stop the java application so that messages remain in the queue "long enough" for you to see them from within the WL console. Then you can shutdown nodes in your cluster individually, so conform that the message is truly being distributed. Then the issue is whether the java app is reading from the entire distributed queue instead of just one node.
    When you use the monitoring tab on your queue, do you see a queue entry for each jms server ( each mgd server needs one )?
    Or is the issue that the java client is only reading from one server?

Maybe you are looking for