JMS queue notification delays

We've noticed that when we import large calendars that there is a delay in some of the events propagating to attendee calendars. We assume that there is some sort of a delay or backlog in the JMS queue.
1) how do you monitor the delay? I tried looking at NumMsgsIn and NumMsgsOut in mbean = com.sun.messaging.jms.server:desttype=t,name="DavNotificationTopic",subtype=Monitor,type=Destination. I expected to see NumMsgsIn greater than NumMsgsOut during the period of sync delay, but they were actually pretty equal the whole time.
2) how do you tune the server to reduce or eliminate the delay?

Yes and no. Yes, scheduling messages are deposited into individual users outboxes when the PUT on the calendar collection happens. But those scheduling messages are not removed from there immediately once processed (although they are purged after some time). A global internal queue is processing those messages asynchronously, adding the corresponding event into attendees calendars as needed.
If you have a large calendar with a lot of events, themselves with a lot of attendees, the queue can grow quite large and take some time to process all those scheduling messages. There is currently no way to monitor this internal queue (well, unless you are ready to play with some SQL commands). On the other hand, by looking at the scheduling log, you can track the gap between messages that have been enqueued (second column is "E") and messages that have been delivered ("DL" or "DE", "DM" or "R"). It should come down to zero when all are processed. By looking at the 4th column, you can track the processing of a particular event (it corresponds to the event UID).

Similar Messages

  • B2B 11g - Managing File name from a JMS queue.

    Hi,
    I have configured a Listening Channel to use Generic File 1.0 (to poll a file from local dir) and send it to a Trading Partner. In B2B User Guide it has been said to have the file name as %TO_PARTY%_%DOCTYPE_NAME%_%DOCTYPE_REVISION%_%MESSAGE_ID%_TIMESTAMP.txt. Extension can be anything (txt, dat, etc).
    It is necessary to have this format? What if I want to send a file with name say ABC.txt*.
    How will I manage this file name pattern if I have to read the file content from a JMS queue (and then send the file to the Trading Partner).
    Thanks,
    Sanjay
    Edited by: Sanjay Bharatiya on 24-Nov-2010 12:07 PM

    Hi Anuj,
    I set up AS2 in my local environment and tested it. I do not get the desired name of the file. The wire message seems to be ok. Following is the Tranport Header present in the wire message from the sender B2B server:
    Message-ID=<ID:<172014.1291742389684.0>@kg_certificate> Content-Transfer-Encoding=binary MIME-version=1.0 From=kg_certificate Disposition-Notification-To=[email protected] AS2-To=exel_certificate User-Agent=AS2 Server Date=Tue, 07 Dec 2010 17:19:50 GMT AS2-Version=1.1 AS2-From=kg_certificate Content-Disposition=attachment; filename=J7Q9A7.txt Content-Type=*application/octet-stream*
    Following is the Transport Header present in the wire message from the receiver B2B server:
    AS2-To=exel_certificate TE=trailers, deflate, gzip, compress Date=Tue, 07 Dec 2010 17:19:50 GMT AS2-Version=1.1 Accept-Encoding=gzip, x-gzip, compress, x-compress AS2-From=kg_certificate Content-Transfer-Encoding=binary Disposition-Notification-To=[email protected] Message-ID=<ID:<172014.1291742389684.0>@kg_certificate> Content-type=application/octet-stream MSG_RECEIVED_TIME=Tue Dec 07 12:20:39 EST 2010 ECID-Context=1.0000In1qASoEoI05nzp2iZ1Cxam9001KGU;kXCmv0 MIME-version=1.0 User-Agent=AS2 Server Oracle HTTPClient Version 10h Content-Disposition=attachment; filename=J7Q9A7.txt Content-Length=211 Host=10.32.200.207:8001 Connection=Keep-Alive, TE From=kg_certificate
    Things look good here but when the file is written to a directory the file name is of the form <sendername>_<doctypename>_<docrevision>_<msgtype>_*****.dat. I do not get the desired file name (J7Q9A7.txt). What am I missing?
    Thanks,
    Sanjay
    Edited by: Sanjay Bharatiya on 7-Dec-2010 11:59 AM

  • Anyone having issue with email notification delay in ES4?

    After upgrade from ES2 to ES4, we're experiencing an email notification delay when a task is assigned to an individual or group queue. It's not consistent, but happen enough that we can some what replicate it. It's almost like an email notification from task assignment wouldn't send through until we kick off another process or claim another task. This happens with server default email notification as well as custom email notification. Please advise how I can go about trouble shooting this.

    This is what in the log at the time I ran the test process & email notification delay occured. Again, the email notification delay wasn't the issue when we were in ES2, until we upgraded to ES4 recently. The delay happens spontaneously, no specific pattern. Sometimes it'll arrive instantly and sometimes it will delay. However, when the notification delay occur, if I kick off another new process, the notification will come through.
    [1/21/15 10:27:47:442 CST] 00000031 ServletWrappe I com.ibm.ws.webcontainer.servlet.ServletWrapper init SRVE0242I: [LiveCycleES4] [/adminui] [/secured/about.jsp]: Initialization successful.
    [1/21/15 10:28:03:107 CST] 00000040 CSRFFilter    I   Fetched allowed referer list for servlet:/CoreSystemConfigComponent
    [1/21/15 10:28:03:200 CST] 00000040 Reference     I org.apache.xml.security.signature.Reference verify Verification successful for URI "#bed5ed34fb984a88466db43f9ab1cef8"
    [1/21/15 10:28:03:684 CST] 00000040 ServletWrappe I com.ibm.ws.webcontainer.servlet.ServletWrapper init SRVE0242I: [LiveCycleES4] [/CoreSystemConfigComponent] [/secured/welcome.jsp]: Initialization successful.
    [1/21/15 10:28:03:746 CST] 00000040 ServletWrappe I com.ibm.ws.webcontainer.servlet.ServletWrapper init SRVE0242I: [LiveCycleES4] [/CoreSystemConfigComponent] [FilterProxyServlet]: Initialization successful.
    [1/21/15 10:28:06:680 CST] 00000040 ServletWrappe I com.ibm.ws.webcontainer.servlet.ServletWrapper init SRVE0242I: [LiveCycleES4] [/CoreSystemConfigComponent] [/secured/config.jsp]: Initialization successful.
    [1/21/15 10:28:30:972 CST] 00000031 Reference     I org.apache.xml.security.signature.Reference verify Verification successful for URI "#a8bc74a810dee608d866cdf3d19861ab"
    [1/21/15 10:28:30:988 CST] 00000031 Reference     I org.apache.xml.security.signature.Reference verify Verification successful for URI "#e83cca4f938a1d9f21e821a8c3663008"
    [1/21/15 10:29:46:283 CST] 00000043 Authenticatio W   Authentication failed for user [abc] (Scheme - Username/Password) Reason: Username or password is incorrect . Refer to debug level logs for category com.adobe.idp.um.businesslogic.authentication for further details
    [1/21/15 10:29:49:278 CST] 00000031 Reference     I org.apache.xml.security.signature.Reference verify Verification successful for URI "#f145055ebb4cb72241a696e2e37912b6"
    [1/21/15 10:36:17:867 CST] 0000002d J2EEConnectio W   Service: XMLFormService resource: ProcessResource@5c105c1(name=XMLForm.exe,pid=5908) could not schedule an interrupt for transaction: com.ibm.ws.tx.jta.TransactionImpl@3c103c10#tid=2172366 because excessive time was spent waiting in queue. Supplied timeout: 0s, Wait adjustment: 0s, Effective timeout: 0s.
    [1/21/15 10:37:33:515 CST] 00000055 J2EEConnectio W   Service: XMLFormService resource: ProcessResource@5c105c1(name=XMLForm.exe,pid=5908) could not schedule an interrupt for transaction: com.ibm.ws.tx.jta.TransactionImpl@7c5a7c5a#tid=2172587 because excessive time was spent waiting in queue. Supplied timeout: 0s, Wait adjustment: 0s, Effective timeout: 0s.
    [1/21/15 10:37:35:980 CST] 000000bf Reference     I org.apache.xml.security.signature.Reference verify Verification successful for URI "#b1ff24709e2764c4fdf7c8f5459a3f3c"
    [1/21/15 10:37:38:570 CST] 000000c0 J2EEConnectio W   Service: XMLFormService resource: ProcessResource@5c105c1(name=XMLForm.exe,pid=5908) could not schedule an interrupt for transaction: com.ibm.ws.tx.jta.TransactionImpl@1fbd1fbd#tid=2173407 because excessive time was spent waiting in queue. Supplied timeout: 0s, Wait adjustment: 0s, Effective timeout: 0s.
    [1/21/15 10:37:42:673 CST] 000000c0 J2EEConnectio W   Service: XMLFormService resource: ProcessResource@5c105c1(name=XMLForm.exe,pid=5908) could not schedule an interrupt for transaction: com.ibm.ws.tx.jta.TransactionImpl@3da43da4#tid=2174482 because excessive time was spent waiting in queue. Supplied timeout: 0s, Wait adjustment: 0s, Effective timeout: 0s.
    [1/21/15 10:38:09:428 CST] 0000002d J2EEConnectio W   Service: XMLFormService resource: ProcessResource@5c105c1(name=XMLForm.exe,pid=5908) could not schedule an interrupt for transaction: com.ibm.ws.tx.jta.TransactionImpl@26002600#tid=2176826 because excessive time was spent waiting in queue. Supplied timeout: 0s, Wait adjustment: 0s, Effective timeout: 0s.
    [1/21/15 10:38:38:258 CST] 00000055 J2EEConnectio W   Service: XMLFormService resource: ProcessResource@5c105c1(name=XMLForm.exe,pid=5908) could not schedule an interrupt for transaction: com.ibm.ws.tx.jta.TransactionImpl@50165016#tid=2177247 because excessive time was spent waiting in queue. Supplied timeout: 0s, Wait adjustment: 0s, Effective timeout: 0s.
    [1/21/15 10:39:09:272 CST] 00000054 J2EEConnectio W   Service: XMLFormService resource: ProcessResource@5c105c1(name=XMLForm.exe,pid=5908) could not schedule an interrupt for transaction: com.ibm.ws.tx.jta.TransactionImpl@26222622#tid=2179048 because excessive time was spent waiting in queue. Supplied timeout: 0s, Wait adjustment: 0s, Effective timeout: 0s.
    [1/21/15 10:39:21:597 CST] 00000030 J2EEConnectio W   Service: XMLFormService resource: ProcessResource@5c105c1(name=XMLForm.exe,pid=5908) could not schedule an interrupt for transaction: com.ibm.ws.tx.jta.TransactionImpl@2b402b40#tid=2179505 because excessive time was spent waiting in queue. Supplied timeout: 0s, Wait adjustment: 0s, Effective timeout: 0s.
    [1/21/15 10:40:07:291 CST] 00000055 Reference     I org.apache.xml.security.signature.Reference verify Verification successful for URI "#ea6a84b4552fffe36b7a86269d7b67d0"
    [1/21/15 10:41:52:938 CST] 00000033 J2EEConnectio W   Service: XMLFormService resource: ProcessResource@5c105c1(name=XMLForm.exe,pid=5908) could not schedule an interrupt for transaction: com.ibm.ws.tx.jta.TransactionImpl@3a503a50#tid=2184317 because excessive time was spent waiting in queue. Supplied timeout: 0s, Wait adjustment: 0s, Effective timeout: 0s.
    [1/21/15 10:42:21:160 CST] 0000002d J2EEConnectio W   Service: XMLFormService resource: ProcessResource@5c105c1(name=XMLForm.exe,pid=5908) could not schedule an interrupt for transaction: com.ibm.ws.tx.jta.TransactionImpl@56fd56fd#tid=2184783 because excessive time was spent waiting in queue. Supplied timeout: 0s, Wait adjustment: 0s, Effective timeout: 0s.
    [1/21/15 10:42:24:218 CST] 000000c3 J2EEConnectio W   Service: XMLFormService resource: ProcessResource@5c105c1(name=XMLForm.exe,pid=5908) could not schedule an interrupt for transaction: com.ibm.ws.tx.jta.TransactionImpl@276a276a#tid=2186778 because excessive time was spent waiting in queue. Supplied timeout: 0s, Wait adjustment: 0s, Effective timeout: 0s.
    [1/21/15 10:42:28:071 CST] 000000c2 ProcessRecord W   deleting oldest recording(s) due to space limitation.
    [1/21/15 10:42:29:943 CST] 000000c2 J2EEConnectio W   Service: XMLFormService resource: ProcessResource@5c105c1(name=XMLForm.exe,pid=5908) could not schedule an interrupt for transaction: com.ibm.ws.tx.jta.TransactionImpl@3c5e3c5e#tid=2188110 because excessive time was spent waiting in queue. Supplied timeout: 0s, Wait adjustment: 0s, Effective timeout: 0s.
    [1/21/15 10:51:15:603 CST] 0000002f Reference     I org.apache.xml.security.signature.Reference verify Verification successful for URI "#c536f8c15947c0e0d16970ced8d90811"

  • Weblogic 10.3 Not Removing Expired Messages from JMS Queues

    Dear All,
    We have an application that is running on Weblogic 10.3.
    This application (let us call this application Y) receives messages on a JMS queue. These messages are placed on the queue by another application (let us call this application X). We would like to have these messages expire within a certain amount of time (i.e. 90000 ms) if they are not consumed.
    Now when application X places the messages onto the queue for application Y to consume, the JMS producer sets the time to live to 90000 ms. We can see that expiration time has been set appropriately in the weblogic console. If a message sits on the queue for longer than 90000 ms the state string of the message is changed to "receive expired". What we don't understand is why the expired messages still end up being consumed from the queue.
    We understand that Weblogic is supposed to have an 'Active Message Expiration' thread that will remove expired messages from the queue. The Expiration Scan Interval for the JMS Server is set to 30 (seconds).
    Can anyone tell us why our expired messages don't seem to be deleted from the queues?
    Tim

    Thank you for the response Rene.
    We have set up both the active expiration scan and the message expiration policy. The active expiration scan is set for every 30 seconds. The message expiration policy is set to "discard". However, the expired messages are still being consumed. Is it possible we are doing something wrong? See a portion of our configuration files below.
    We have set up the expiration scan time interval. See a portion of our config.xml below:
    <jms-server>
    <name>brokerJMSServer</name>
    <target>AdminServer</target>
    <persistent-store xsi:nil="true"></persistent-store>
    <store-enabled>true</store-enabled>
    <allows-persistent-downgrade>false</allows-persistent-downgrade>
    <hosting-temporary-destinations>true</hosting-temporary-destinations>
    <temporary-template-resource xsi:nil="true"></temporary-template-resource>
    <temporary-template-name xsi:nil="true"></temporary-template-name>
    <message-buffer-size>-1</message-buffer-size>
    *<expiration-scan-interval>30</expiration-scan-interval>*
    <production-paused-at-startup>false</production-paused-at-startup>
    <insertion-paused-at-startup>false</insertion-paused-at-startup>
    <consumption-paused-at-startup>false</consumption-paused-at-startup>
    </jms-server>
    <jms-system-resource>
    <name>broker-jms</name>
    <target>AdminServer</target>
    <sub-deployment>
    <name>EhrBrokerRequestQueue</name>
    <target>brokerJMSServer</target>
    </sub-deployment>
    <descriptor-file-name>jms/broker-jms.xml</descriptor-file-name>
    </jms-system-resource>
    <admin-server-name>AdminServer</admin-server-name>
    We have set up the message expiration policy in our jms descriptor. See a portion below:
    <?xml version='1.0' encoding='UTF-8'?>
    <weblogic-jms xmlns="http://www.bea.com/ns/weblogic/weblogic-jms" xmlns:sec="http://www.bea.com/ns/weblogic/90/security" xmlns:wls="http://www.bea.com/ns/weblogic/90/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-jms http://www.bea.com/ns/weblogic/weblogic-jms/1.0/weblogic-jms.xsd">
    <queue name="EhrBrokerRequestQueue">
    <delivery-params-overrides>
    <redelivery-delay>-1</redelivery-delay>
    </delivery-params-overrides>
    <delivery-failure-params>
    <redelivery-limit>-1</redelivery-limit>
    *<expiration-policy>Discard</expiration-policy>*
    </delivery-failure-params>
    <jndi-name>EhrBrokerRequestQueue</jndi-name>
    </queue>
    </weblogic-jms>
    What could we be doing wrong?
    Kind Regards,
    Tim

  • OC4J/JMS Queue Listener

    Hello,
    Have a simple test JMS client that is listening for messages posted to a JMS queue setup in the OC4J/JMS. While the messages are ending up in the proper queues [this can be verified via a queue browser] the listener does not seem to be getting any notifications. The receiver code is essentially,
    queueConnection = queueConnectionFactory.createQueueConnection();
    QueueSession queueSession = queueConnection.createQueueSession(
                             false,
                             Session.AUTO_ACKNOWLEDGE);
    QueueReceiver queueReceiver = queueSession.createReceiver(queue);
    System.out.println("Set Listener");
    queueReceiver.setMessageListener(new OracleListener());
    queueConnection.start();
    This is from a remote client for both the sender and the reciever. Any help would be much appreciated.
    Vinay Menon

    I am investigating this issue myself.   I have come up with two possible scenarios.
    1.  Do it in Java -- Of course this defeats the purpose of using SOA Suite.  In the book SOA Suite 11g handbook, chapter twelve he has a jms adapter publishing to a queue and a java program listening to that queue.    http://technology.amis.nl/2010/09/21/soa-suite-11g-handbook-chapter-complements/
    you can refer to the TheFinancialApplication.
    2.  If you have access to the Jms programs that publish the messages to the queue (that your programs want to listen to) and they are done in SOA Suite 11g, you could use Event Delivery Network (EDN) to create a event on the publishing side-- and then set up your listening processes to listen for that Event (which is jms under the hood).
    You could then have those processes kick off from that event.
    Anyone with a better idea?
    -- Update 8 hours later  -- I have a better idea:
    I created a composite that publishes a JMS message to a queue on weblogic using the jms adapter.  I created a second composite with a jms adapter (on the Exposed services side of the composite)  that Consumes a message, hooked it up to a mediator and then wrote the contents of the message to a file.  Uploaded both.
    Moments after the JMS publisher Composite ran, a file was created.  From this I would surmise that you could run other processes as well.
    -- Update two days later.   So much for the better idea.
    Given that the Flow Trace of the last test looked suspiciously like this one one application and not two separate applications, I decided to test it further.  I have two PCs.  On each PC I have a soa domain, Uploaded the jms publisher to one domain, and the JMS Consumer to the other separate domain on the other PC.   Ran the publisher, and the other one just sat still -- didn't start at all.
    The first test was too good to be true!
    Stuart

  • JMS Queue monitoring

    Hi everyone,
    is there any way to monitor a jms queue with its contained messages ? i'm talking about a tool like the jmx console in jboss - the JMS Adapter and JMS Notification in the Visual Admin only provide some properties.
    Any suggestions ?

    Hi,
    In short what you want (sending email in case message has stayed too long time in the queue), is NOT possible directly. That's not a standard feature by the JMS spec.   
    What is possible is the is so-called dead messages, once the acknowledgment fails the predefined number of times then the messages will be redirected to a special queue. From there the messages can be exported by telnet.
    Check SAP note 777930 for more info. Btw, it might be a good idea to get familiar with that note, otherwise if the external server let's say always throws an exception while processing the message, it will be moved to this special queue and unless someone issues the appropriate telnet commands, nobody will understand about this.
    However if you disable this  feature, that will mean that the message will be delivered endlessly, causing CPU load. Not nice if you have doubts in your external listeners.                                                                               
    Now about the queue monitoring :
    You could create manually a periodic task (EJB timers in J2EE 1.4 which is covered in the prerelease of the next server version, or if you are using Netweaver 04s or 04s than perhaps java.util.Timer) that will periodically open a JMS browser, check the  messages in the queue, if they have stayed too long time (>100 seconds for example ?) or if the queue is too big (>100 messages) you can send manually the email alert that something has went wrong. By usage of the JAVA API that should be simple
    Another thing you can do is that inside your external listeners and the onMessage method, you could check manually the number of times the message is redelivered, if it is above some threshold (i.e . if it is 3, that means the SAP server has delivered the message 3 times , since the listener have rejected it 2 times already),then you can send the email via the standard java API. The delivery count can be retrieved by using the standard optional property JMSXDeliveryCount from the message.                                                      
    HTH
    Peter

  • JMS/Queue cluster question

              Hi
              I have some very basic cluster questions on JMS Queues. Lets say Q1>I have 3 WLS
              in cluster. I create the queue in only WLS#1 - then all the other WLS (#2 and #3)
              should have a stub in their JNDI tree for the Queue which points to the Queue in
              #1 - right? Basically what I am trying to acheive is to have the queue in one server
              and all the other servers have a pointer to it - I beleive this is possible in WLS
              cluster - right??
              Q2> Is there any way a client to the queue running on a WLS can tell whether the
              Queue handle its using is local (ie in the same server) or remote. Is the API createQueue(./queuename)
              going to help here??
              Q3>Is there any way to create a Queue dynamically - I guess JMX is the answer -right?
              But I will take this question a bit further - lets say Q1 answer is yes. In this
              case if server #1 crashes - then #2 and #3 have no Queues. So if they try to create
              a replica of the Queue (as on server#1) - pointing to the same filestore - can they
              do it?? - I want only one of them to succed in creating the Queue and also the Queue
              should have all the data of the #1 Queue (1 to 1 replica).
              All I want is the concept of primary and secondary queue in a cluster. Go on using
              the primary queue - but if it fails use the 2ndry queue. Kind of HttpSession replication
              concept in clusters. My cluster purpose is more for failover rather than loadbalancing.
              TIA
              Anamitra
              

              Anamitra wrote:
              > Hi Tom
              > 7.0 is definitely an option for me. So lets take the scenarion on case of JMS cluster
              > and 7.0.
              >
              > I do not understand what u mean by HA framework?
              An HA framework is a third party product that can be used to automatically restart a failed server
              (perhaps on a new machine), and that will guarantee that the same server isn't started in two
              different places (that would be bad). There are few of these HA products, "Veritas" is one of
              them. Note that if you are using JMS file stores or transactions, both of which depend on the disk,
              you must make sure that the files are available on the new machine. One approach to this is to use
              what is known as a "dual-ported" disk.
              > If I am using a cluster of 3 WLS
              > 7.0 servers - as u have said I can create a distrubuted Queue with a fwd delay attribute
              > set to 0 if I have the consumer only in one server say server #1.
              > But still if the server #1 goes down u say that the Queues in server #2 and server
              > #3 will not have access to the messages which were stuck in the server #1 Queue when
              > it went down -right?
              Right, but is there a point in forwarding the messages to your consumer's destination if your
              application is down?
              If your application can tolerate it, you may wish to consider allowing multiple instances of it (one
              per physical destination). That way if something goes down, only those messages are out-of-business
              until the application comes back up...
              >
              >
              > Why cant the other servers see them - they all point to the same store right??
              > thanks
              > Anamitra
              >
              Again, multiple JMS servers can not share a store. Nor can multiple stores share a file. That will
              cause corruption. Multiple stores CAN share a database, but can't use the same tables in the
              database.
              Tom
              >
              > Tom Barnes <[email protected]> wrote:
              > >
              > >
              > >Anamitra wrote:
              > >
              > >> Hi
              > >> I have some very basic cluster questions on JMS Queues. Lets say Q1>I
              > >have 3 WLS
              > >> in cluster. I create the queue in only WLS#1 - then all the other WLS
              > >(#2 and #3)
              > >> should have a stub in their JNDI tree for the Queue which points to the
              > >Queue in
              > >> #1 - right?
              > >
              > >Its not a stub. But essentially right.
              > >
              > >> Basically what I am trying to acheive is to have the queue in one server
              > >> and all the other servers have a pointer to it - I beleive this is possible
              > >in WLS
              > >> cluster - right??
              > >
              > >Certainly.
              > >
              > >>
              > >> Q2> Is there any way a client to the queue running on a WLS can tell whether
              > >the
              > >> Queue handle its using is local (ie in the same server) or remote. Is
              > >the API createQueue(./queuename)
              > >> going to help here??
              > >
              > >That would do it. This returns the queue on the CF side of the established
              > >Connection.
              > >
              > >>
              > >> Q3>Is there any way to create a Queue dynamically - I guess JMX is the
              > >answer -right?
              > >> But I will take this question a bit further - lets say Q1 answer is yes.
              > >In this
              > >> case if server #1 crashes - then #2 and #3 have no Queues. So if they
              > >try to create
              > >> a replica of the Queue (as on server#1) - pointing to the same filestore
              > >- can they
              > >> do it??
              > >> - I want only one of them to succed in creating the Queue and also the
              > >Queue
              > >> should have all the data of the #1 Queue (1 to 1 replica).
              > >
              > >No. Not possible. Corruption city.
              > >Only one server may safely access a store at a time.
              > >If you have an HA framework that can ensure this atomicity fine, or are
              > >willing
              > >to ensure this manually then fine.
              > >
              > >>
              > >>
              > >> All I want is the concept of primary and secondary queue in a cluster.
              > >Go on using
              > >> the primary queue - but if it fails use the 2ndry queue. Kind of HttpSession
              > >replication
              > >> concept in clusters. My cluster purpose is more for failover rather than
              > >loadbalancing.
              > >
              > >If you use 7.0 you could use a distributed destination, with a high weight
              > >on the destination
              > >you want used most. Optionally, 7.0 will automatically forward messages
              > >from distr. dest
              > >members that have no consumers to those that do.
              > >
              > >In 6.1 you can emulate a distributed destination this way (from an upcoming
              > >white-paper):
              > >Approximating Distributed Queues in 6.1
              > >
              > >If you wish to distribute the destination across several servers in a cluster,
              > >use the distributed
              > >destination features built into WL 7.0. If 7.0 is not an option, you can
              > >still approximate a simple
              > >distributed destination when running JMS servers in a &#8220;single-tier&#8221;
              > configuration.
              > > Single-tier indicates
              > >that there is a local JMS server on each server that a connection factory
              > >is targeted at. Here is a
              > >typical scenario, where producers randomly pick which server and consequently
              > >which part of the
              > >distributed destination to produce to, while consumers in the form of MDBs
              > >are pinned to a particular
              > >destination and are replicated homogenously to all destinations:
              > >
              > >· Create JMS servers on multiple servers in the cluster. The servers will
              > >collectively host the
              > >distributed queue &#8220;A&#8221;. Remember, the JMS servers (and WL servers) must
              > >be named differently.
              > >
              > >· Configure a queue on each JMS server. These become the physical destinations
              > >that collectively become
              > >the distributed destination. Each destination should have the same name
              > >"A".
              > >
              > >· Configure each queue to have the same JNDI name &#8220;JNDI_A&#8221;, and also
              > take
              > >care to set the destination&#8217;s
              > >&#8220;JNDINameReplicated&#8221; parameter to false. The &#8220;JNDINameReplicated&#8221;
              > parameter
              > >is available in 7.0, 6.1SP3
              > >or later, or 6.1SP2 with patch CR061106.
              > >
              > >· Create a connection factory, and target it at all servers that have a
              > >JMS server with &#8220;A&#8221;.
              > >
              > >· Target the same MDB pool at each server that has a JMS server with destination
              > >&#8220;A&#8221;, configure its
              > >destination to be &#8220;JNDI_A&#8221;. Do not specify a connection factory URL
              > when
              > >configuring the MDB, as it can
              > >use the server&#8217;s default JNDI context that already contains the destination.
              > >
              > >· Producers look up the connection factory, create a connection, then a
              > >session as usual. Then producers
              > >look up the destination by calling javax.jms.QueueSession.createQueue(String).
              > > The parameter to
              > >createQueue requires a special syntax, the syntax is &#8220;./<queue name>&#8221;,
              > so
              > >&#8220;./A&#8221; works in this example.
              > >This will return a physical destination of the distributed destination that
              > >is local to the producer&#8217;s
              > >connection. This syntax is available on 7.0, 6.1SP3 or later, and 6.1SP2
              > >with patch CR072612.
              > >
              > >This design pattern allows for high availability, as if one server goes
              > >down, the distributed destination
              > >is still available and only the messages on that one server become unavailable.
              > > It also allows for high
              > >scalability as speedup is directly proportional to the number of servers
              > >on which the distributed
              > >destination is deployed.
              > >
              > >
              > >
              > >>
              > >> TIA
              > >> Anamitra
              > >
              > >
              > ><!doctype html public "-//w3c//dtd html 4.0 transitional//en">
              > ><html>
              > >Anamitra wrote:
              > ><blockquote TYPE=CITE>Hi
              > ><br>I have some very basic cluster questions on JMS Queues. Lets say Q1>I
              > >have 3 WLS
              > ><br>in cluster. I create the queue in only WLS#1 - then all the other WLS
              > >(#2 and #3)
              > ><br>should have a stub in their JNDI tree for the Queue which points to
              > >the Queue in
              > ><br>#1 - right?</blockquote>
              > >Its not a stub. But essentially right.
              > ><blockquote TYPE=CITE>Basically what I am trying to acheive is to have
              > >the queue in one server
              > ><br>and all the other servers have a pointer to it - I beleive this is
              > >possible in WLS
              > ><br>cluster - right??</blockquote>
              > >Certainly.
              > ><blockquote TYPE=CITE>
              > ><br>Q2> Is there any way a client to the queue running on a WLS can tell
              > >whether the
              > ><br>Queue handle its using is local (ie in the same server) or remote.
              > >Is the API createQueue(./queuename)
              > ><br>going to help here??</blockquote>
              > >That would do it. This returns the queue on the
              > >CF side of the established Connection.
              > ><blockquote TYPE=CITE>
              > ><br>Q3>Is there any way to create a Queue dynamically - I guess JMX is
              > >the answer -right?
              > ><br>But I will take this question a bit further - lets say Q1 answer is
              > >yes. In this
              > ><br>case if server #1 crashes - then #2 and #3 have no Queues. So if they
              > >try to create
              > ><br>a replica of the Queue (as on server#1) - pointing to the same filestore
              > >- can they
              > ><br>do it?? <br>
              > >- I want only one of them to succed in creating the Queue and also the
              > >Queue
              > ><br>should have all the data of the #1 Queue (1 to 1 replica).</blockquote>
              > >No. Not possible. Corruption city.
              > ><br>Only one server may safely access a store at a time.
              > ><br>If you have an HA framework that can ensure this atomicity fine, or
              > >are willing
              > ><br>to ensure this manually then fine.
              > ><blockquote TYPE=CITE>
              > ><p>All I want is the concept of primary and secondary queue in a cluster.
              > >Go on using
              > ><br>the primary queue - but if it fails use the 2ndry queue. Kind of HttpSession
              > >replication
              > ><br>concept in clusters. My cluster purpose is more for failover rather
              > >than loadbalancing.</blockquote>
              > >If you use 7.0 you could use a distributed destination, with a high weight
              > >on the destination
              > ><br>you want used most. Optionally, 7.0 will automatically
              > >forward messages from distr. dest
              > ><br>members that have no consumers to those that do.
              > ><p><i>In 6.1 you can emulate a distributed destination this way (from an
              > >upcoming white-paper):</i>
              > ><br><i>Approximating Distributed Queues in 6.1</i><i></i>
              > ><p><i>If you wish to distribute the destination across several servers
              > >in a cluster, use the distributed destination features built into WL 7.0.
              > >If 7.0 is not an option, you can still approximate a simple distributed
              > >destination when running JMS servers in a &#8220;single-tier&#8221; configuration.
              > >Single-tier indicates that there is a local JMS server on each server that
              > >a connection factory is targeted at. Here is a typical scenario,
              > >where producers randomly pick which server and consequently which part
              > >of the distributed destination to produce to, while consumers in the form
              > >of MDBs are pinned to a particular destination and are replicated homogenously
              > >to all destinations:</i><i></i>
              > ><p><i>· Create JMS servers on multiple servers in the cluster.
              > >The servers will collectively host the distributed queue &#8220;A&#8221;. Remember,
              > >the JMS servers (and WL servers) must be named differently.</i><i></i>
              > ><p><i>· Configure a queue on each JMS server. These become
              > >the physical destinations that collectively become the distributed destination.
              > >Each destination should have the same name "A".</i><i></i>
              > ><p><i>· Configure each queue to have the same JNDI name &#8220;JNDI_A&#8221;,
              > >and also take care to set the destination&#8217;s &#8220;JNDINameReplicated&#8221;
              > parameter
              > >to false. The &#8220;JNDINameReplicated&#8221; parameter is available in
              > >7.0, 6.1SP3 or later, or 6.1SP2 with patch CR061106.</i><i></i>
              > ><p><i>· Create a connection factory, and target it at all servers
              > >that have a JMS server with &#8220;A&#8221;.</i><i></i>
              > ><p><i>· Target the same MDB pool at each server that has a JMS server
              > >with destination &#8220;A&#8221;, configure its destination to be &#8220;JNDI_A&#8221;.
              > >Do not specify a connection factory URL when configuring the MDB, as it
              > >can use the server&#8217;s default JNDI context that already contains the destination.</i><i></i>
              > ><p><i>· Producers look up the connection factory, create a connection,
              > >then a session as usual. Then producers look up the destination by
              > >calling javax.jms.QueueSession.createQueue(String). The parameter
              > >to createQueue requires a special syntax, the syntax is &#8220;./<queue name>&#8221;,
              > >so &#8220;./A&#8221; works in this example. This will return a physical
              > >destination of the distributed destination that is local to the producer&#8217;s
              > >connection. This syntax is available on 7.0, 6.1SP3 or later,
              > >and 6.1SP2 with patch CR072612.</i><i></i>
              > ><p><i>This design pattern allows for high availability, as if one server
              > >goes down, the distributed destination is still available and only the
              > >messages on that one server become unavailable. It also allows
              > >for high scalability as speedup is directly proportional to the number
              > >of servers on which the distributed destination is deployed.</i>
              > ><br><i></i>
              > ><br><i></i>
              > ><blockquote TYPE=CITE>
              > ><br>TIA
              > ><br>Anamitra</blockquote>
              > ></html>
              > >
              > >
              

  • Mbean that listen for jms queue messages

    Hi to all,
              I must use a Jmx notification listener architecture to trap when a new message arrives (i must also handle the message content) in a weblogic jms queue.
              Do you know which mbean could help me to observe the new ariving message?
              In the javadocs i cant' find any useful mbean to do that..
              Thanks

    Hi to all,
              I must use a Jmx notification listener architecture to trap when a new message arrives (i must also handle the message content) in a weblogic jms queue.
              Do you know which mbean could help me to observe the new ariving message?
              In the javadocs i cant' find any useful mbean to do that..
              Thanks

  • How to monitor jms queues

    Hi,
    I want to monitor JMS queues in a way that if the pending messages increases some limit, i should get alert may be through mail or some message.
    As in the application message load is so much and due to some delay in response from some resources(external application) the messages in the queue start increasing and the "Pending Messages" for the queue start increasing as shown in weblogic server.
    Thanks in advance
    -Abi

    This is a monitoring function. And, monitoring functions are not specified in the JMS specification. For Sun MQ 4.x (don't remember which one), the monitoring functions are accessible through JMX. For other products, see your admin guide.
    [m-10196900]

  • I want to access JMS Queue in websphere from a client application

    Hello all
    I tried to access a jms queue in the websphere from a client application
    my connection factory jndi name is : MyConn
    my queue name jndi name is : MyQueue
    and here is my code :
    Hashtable environment = new Hashtable();
    environment.put(Context.INITIAL_CONTEXT_FACTORY,
    "com.ibm.websphere.naming.WsnInitialContextFactory");
    environment.put(Context.URL_PKG_PREFIXES, "com.ibm.ws.naming");
    environment.put(Context.PROVIDER_URL, "corbaloc:iiop:localhost:2809");
    return new InitialContext(environment);
    then:
    q = (Queue) ctx.lookup(QJNDIName);
    QueueConnectionFactory connFactory = (QueueConnectionFactory)
    ctx.lookup(ConnFactName);
    I had the following exception :
    javax.naming.NameNotFoundException: Context: networking/nodes/networking/servers/server1, name: MyQueue: First component in name MyQueue not found. Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0
    Can i have any help please ....

    Hi
    You are missing some critical jar files in your class path. It should be namingclient.jar, also please or something similar that is missing in classpath.
    HTH
    VJ

  • Oracle AQ to JMS Queue which is on Oracle Application server

    Hi,
    I am using Oracle Streams AQ Oracle database 10g
    and i have a JMS Queue on oracle Application server.
    how i can Propagate message from Oracle AQ (AQ$_JMS_TEXT_MESSAGE)Queue to JMS Queue. ?
    Thanks,
    Satnani

    Hi Justin,
    Thanks for Reply, but in my case my JMS queue is on Oracle Application Server.
    and i want to propagate message from AQ to JMS queue.
    and none of the document is available to describe how to send message from oracle database AQ to JMS queue which is on application server.
    please help
    Thanks,
    Satnani

  • How to delete the messages from JMS Queue

    Hi,Can anybody help how to delete the messages from the JMS Queue.Thanks in advance.

    You can dequeue the message using a JMS client or delete it using Weblogic Admin Console -
    http://download.oracle.com/docs/cd/E17904_01/apirefs.1111/e13952/taskhelp/jms_modules/queues/ManageQueues.html
    Regards,
    Anuj

  • How to read the messages in the JMS Queue using JMX

    Hi,
              I want to read messages in the JMS queue using JMX. I was able to read using QueueBrowser but want to modify priority of the messages using JMX.
              I tried to use JMSDestinationRuntimeMBean but it does not allow us to read messages unless we pass the message Id. Is there any way that I can get all the messages in the queue.
              I am using Weblogic 8.1 SP4
              Can someone please help me in this regard.
              Thanks,
              Kiran.
              Edited by KGudipati at 10/22/2007 1:22 AM

    Hi,
    As far as i know, JMS Object Messages is not supported by XI JMS adapter.
    you need to have the JMS provider to transform the message to bytes messages.
    (Refer to SAP note 856346)

  • How to configure my JMS QUEUE serve only one message at a time?

    Hi All,
    I have requirement where I need to develope a JMS QUEUE in weblogic. This MDB has to serve only one message at a time. Is there any way to configure via annotations or in weblogic server settings ?
    Any help would be really appreciated...
    Thank you,
    K.

    I'm not aware of any way to configure the max pool size via annotations, you might try posting to the EJB newsgroup (please post back the answer). Of course you can set the size via an EJB descriptor, as per the MDB chapter of the Performance and Tuning guide in the edocs.
    By the way, if you have ordered message processing requirements, I highly recommend taking a look at the WebLogic JMS "Unit-of-Order" (UOO) feature as per the UOO chapter of the JMS programmer's guide. For a variety of reasons, the UOO features is often, by far, the best option for handling such requirements. If this feature applies to your use case, then there would be no need to force single threaded message processing in some sort of manual fashion (the feature enforces this for you).
    Tom

  • Dequeue from JMS Queue 10 at a time and process it.

    Hi,
    I have created a JMS queue in weblogic.
    Say i enqueue 1000 records in the queue at one go.
    Now, i want a bpel process to dequue from it and process it.
    However as per my requirement i want at a time 10 instances being active at a time i.e. 10 records from the queue are being processed at a time.
    Once any one of them finishes, the other will pick up the message.
    1 BPEL instance will process only 1 record from Q at a time
    Please let me know how to achieve this.

    You need to understand here that it is adapter which deques the message from queue and it will deliver it to BPEL for processing which is an async process. So adapter will keep dequeing messages and keep publishing it to BPEL irrespective of whether BPEL process has completed processing.
    You may need to tweak the adapter configuration here. First of all create the synchronous BPEL composite so that both adapter and BPEL work in same transaction -
    https://blogs.oracle.com/adapters/entry/creating_a_synchronous_bpel_composite_using_file_adapter
    You may control the number of threads for inbound JMS adapter using binding property "adapter.jms.receive.threads" in composite.xml
    Regards,
    Anuj

Maybe you are looking for

  • How do I restore from external drive, with outdated back-up  software?

    I mistakenly kept using my LaCie external drive's Silver keeper softerware after upgrading my Mac OS. My SilverKeeper version is 1.1.2, which I now know is incompatible with my Mac 10.4.6. (Maybe that is why I got an error report when I ran the Mac d

  • Pricing procedure issue ..

    Hi Expert, I have assigned pricing procedure to sales org. 1500 so that i am able to create sales order through VA01. I have assigned it through view V_T683V. Now i want to create MAM order in sales org. 1500 but at the time of creation i am getting

  • Attachment in SAP

    Hi! Gurus              Regarding the Inspection Report generating QM, i need a report to attach the Inspection report (i,e the image of the Inspected product). and store it in the database server for further use.              if we convert the genera

  • Why do I need to re-install flash player every time I restart my PC

    About a week ago my I nocticed that when every I tried to watch a flash video (with the exception of using Chrome) I was asked to install flash player with I already had installed.  However if I reinstall it everything works until I restart my PC.  N

  • I installed the latest version of Flash, but PowerPoint 2010 won't play videos

    I installed the latest version of Flash, but PowerPoint 2010 won't play embedded videos.  I keep getting a message telling me to install Flash, even though it is clearly on my machine.