MDB on MQSeries queue undeployment

I just started testing MDBs listening on MQSeries queues. WLS 6.1 and MQ 5.1. I followed
the instructions in the BEA foreign JMS providers white paper, deployed the MDBs,
queued messages and things seemed to work. But shutting down the server revealed
that the undeployment of each MDB was slow. Slower than SSBs or MDBs listening on
BEA queues. Would appreciate any suggestions about what it could be. Thanks.

I just started testing MDBs listening on MQSeries queues. WLS 6.1 and MQ 5.1. I followed
the instructions in the BEA foreign JMS providers white paper, deployed the MDBs,
queued messages and things seemed to work. But shutting down the server revealed
that the undeployment of each MDB was slow. Slower than SSBs or MDBs listening on
BEA queues. Would appreciate any suggestions about what it could be. Thanks.

Similar Messages

  • Throttling MDB performance running against MQSeries queue

    I have an unusual requirement for an application. We have a non-transactional MQSeries queue that is bound as a foreign JMS destination in client mode (thanks to the folks on the forum who helped me configure that!).
              The problem is that the cluster that we are running our application on has limited capacity and I need to make sure that the MDB that will be listening to the queue does not surpass a certain TPS limit (say, 1 TPS). This article explains how to throttle performance using a separate execute thread -- http://e-docs.bea.com/wls/docs81/perform/AppTuning.html#1105201
              However, this requires you to set the MDB's "dispatch-policy' attribute to the lower priority queue in ejb-jar.xml. However, the documentation on this attribute -- http://edocs.beasys.com/wls/docs81/ejb/DDreference-ejb-jar.html#1113605 -- indicates that this attribute is only honoured if the source queue is transactional in nature.
              What to do? A transactional queue is a hard sell to our infrastructure folks. Can I use the extended transactional client and have this work?
              FYI - using the max-beans-in-free-pool does not do a sufficiently good job of limiting performance.
              Any other ideas?

    another possibility might be the following scenario:
              create a local jms-destination, maybe with a jdbc-store.
              then use the weblogic bridge to transfer messages into the local jms-queue.
              at this point you can configure flow-control for the connection factory
              to limit transferred messages.
              the problem in this case is, that unprocessed messages have to be stored
              on the application server or in the database.
              but maybe this can help you.
              --Klaas
              gbrail schrieb:
              > As the doc describes, your MDB's "onMessage" method is invoked by a thread created by MQ. That means we have no control over it, or how fast it runs. I don't know of any "throttling" features in MQ either that would help.
              >
              > The only (ugly!) suggestion I can think of is that you should set "max-beans-in-free-pool" to 1 and periodically "sleep" in your onMessage method so that you don't get messages too fast!
              >
              > (And even if you were able to use a separate execute queue, or a transactional queue, you still could potentially get messages more than once per second, so you might still need to sleep anyway.)

  • Configuring an MDB to an MQSeries Queue

    I want complete details as to how to configure an MDB to an MQSeries Queue.
              

    From the JMS FAQ at http://e-docs.bea.com/wls/docs70/faq/jms.html
              Q. How do I integrate non-WebLogic JMS providers with WLS?
              A. Refer to the white paper, "Using Foreign JMS Providers with WebLogic
              Server" (jmsproviders.pdf) on
              http://dev2dev.bea.com/resourcelibrary/whitepapers.jsp?highlight=whitepapers
              for a discussion on integrating MQ Series, IBus MessageServer, Fiorano,
              and SonicMQ.
              Or google search this newsgroup for "MQ".
              Tom
              Ranjit wrote:
              > I want complete details as to how to configure an MDB to an MQSeries Queue.
              

  • Oracle 8i and MQseries queues

    Is there any possibility to access MQSeries queues using 8i AQ packages routines? I have to read some data from MQS and insert it into Oracle on Win2k and wonder if I need any additional MQ interfaces.
    Best regards,
    Tomek.

    Hi Brajesh,
    Have you ever set up communication between Oracle 9i and MQSeries?
    Now I'm trying to read MQ messages using Oracle AQ and Messaging Gateway.
    When I'm starting MGW agent i get error message: 'bad native queue' in log file.
    Agent is still running and reachable.
    Is it possible that i need local MQ queue manager?
    Could you please help me with this?
    Regards,
    Tomek.

  • Configuring MDB to receive message from MQSeries Queues bound on WL JNDI

    Hi,
    I am using weblogic7.0 sp2. I need to configure my MDB to receive message from MQ Series (on a different server). The queue is bound to WL JNDI using a server startup program.
    Anyone with experiece, please help.
    Thanks,
    Fasih

    I'd start here:
    http://e-docs.bea.com/wls/docs70/faq/index.html
    -- Rob
    WLS Blog http://dev2dev.bea.com/blog/rwoollen/

  • How do I use same MDB for multiple Queues? Deployment ?

              Here is what I am trying to do
              I have written one MDB that I want to use for multiple queues. I have seen posting
              mentioning that code a new weblogic-ejb-jar.xml to define other queues as the
              solution.
              Is there any other work around?
              I want to add queues in future as and when needed. I don't want to modify the
              already deployed jar to replace it with new weblogic-ejb-jar.xml everytime I have
              to add another queue for the message-driven-bean. Is is possible to use some kind
              of reference tag and just put weblogic-ejb-jar.xml in a new jar file and deply
              that every time I have a new queue to use for this MDB ( I don't think so, but
              again ???).
              Any help would be greatly appreciated.
              Chris
              

    Sorry -- that's the only solution for now.
              greg
              "Chris" <[email protected]> wrote in message
              news:[email protected]..
              >
              > Here is what I am trying to do
              >
              > I have written one MDB that I want to use for multiple queues. I have seen
              posting
              > mentioning that code a new weblogic-ejb-jar.xml to define other queues as
              the
              > solution.
              >
              > Is there any other work around?
              >
              > I want to add queues in future as and when needed. I don't want to modify
              the
              > already deployed jar to replace it with new weblogic-ejb-jar.xml everytime
              I have
              > to add another queue for the message-driven-bean. Is is possible to use
              some kind
              > of reference tag and just put weblogic-ejb-jar.xml in a new jar file and
              deply
              > that every time I have a new queue to use for this MDB ( I don't think so,
              but
              > again ???).
              >
              > Any help would be greatly appreciated.
              >
              > Chris
              

  • Load balancing and clustered MDBs using a Queue

    With the following advice/information from
              http://e-docs.bea.com/wls/docs61/faq/jms.html#252978,
              "One customer had an example where topic MDBs are needed in which there will
              be multiple implementations of the MDBs listening on the same topic. In
              other words, more than one MDB with a different implementation may be
              subscribing to the same topic. The client has no advanced way of knowing how
              many different kinds of MDBs may be listening on the same topic, but it is
              possible for there to be more than one listener, therefore topics, not
              queues. For each kind of MDB listening on the topic, the message is
              delivered exactly once (i.e., the message will be delivered exactly once to
              an instance in each named MDB pool listening on the topic)."
              If I have a set of MDB's scraping Messages from the JMS Queue, what is the
              load-balancing behavior?
              1) Consider a lightly-loaded system, where each MDB has sufficient time to
              process the message before the next one shows up in the queue. Will the same
              MDB get all the messages?
              2) Consider a heavily-loaded system, where each MDB has insufficient time to
              process the message before the next one shows up in the queue. How would you
              characterize the de facto load-balancing behavior? least-loaded?
              

    Have you tried the SAP WebDispatcher.  This should acomplish what you want. 
    http://help.sap.com/saphelp_nw04/helpdata/en/42/5cfd3b0e59774ee10000000a114084/frameset.htm

  • Message Driven Bean (MDB) for AQ Queue cannot start

    I am working on the creating a message driven bean in Managed OC4J 10.1.3.0 to consume messages from AQ Queue. I am using a Oracle AS generic JMS connector and a resource adapter to create a message listener for the MDB.
    I am able to make successful connections to the AQ and also consume messages, but if i try to start the MDB using the Oracle Application Server Web Admin console, the MDB fails to start, i have to restart the entire OC4J instance to restart the MDB.
    The error on the Admin Console says "Failed to start MDB. Please see log for details." , but the problem is nothing is written to the log file.
    I have tried setting the logging level in web admin console to FINER but still no new errors are written to the log file. I have checked the opmn logs, instance logs as well the home logs.
    Please help, since this issue will further help us decide whether we need to go with the implementation or not.

    As far as I know XMLType JMS messages are not supported when using OJMS. They might be for OC4J 10.1.3, but I thought it's an AQ limitation rather than an OC4J one.. To be sure you might just log a TAR on Metalink.
    hth,
    Bastiaan

  • MDB Topic works, Queue doesnt 9.0.3

    Hi Gurus,
    As I wrote in subject, the topics work fine, but queues dont. MDB cannot reach the message. It looks like it dosn't know about queue. My OC4J realese 9.0.3. Did anybody encaunter similar issue ?

    Do you see any errors in server log when MDB was deployed or when message was enqueued?

  • Creating a MDB and Distributed Queue in Clustered env in weblogic 9.2

    I have created 3 managed servers and all these managed servers are in the cluster.
              Now i create JMS module for this cluster and create the Connection factory 'QUEUE_CF_8' and distributed Queue 'DIS_QUEUE_8' targeting to the cluster.
              I create a MDB and JMS client and deploy them in the cluster.JMS client sends the message to the distributed queue and MDB is listening to the distributed queue
              When i deploy the MDB , it is deploys perfectly . But when i run the client it fails with the following exception
              [java] javax.naming.NameNotFoundException: Unable to resolve 'QUEUE_CF_8'. Resolved '' [Root exception is javax.naming.NameNotFoundException: Unable to resolve 'QUEUE_CF_8'. Resolved '']; remaining name 'QUEUE_CF_8'
              When i view the JNDI tree for all the managed servers , i can see the Connection factory and the distributed queue.
              Also i deploy the MDB to the cluster and no submoduletargets are specified.
              Let me know what is that iam missing.

    <?xml version='1.0' encoding='UTF-8'?>
              <weblogic-jms xmlns="http://www.bea.com/ns/weblogic/90" xmlns:sec="http://www.bea.com/ns/weblogic/90/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/90/security/wls" xsi:schemaLocation="http://www.bea.com/ns/weblogic/920 http://www.bea.com/ns/weblogic/920.xsd">
              <connection-factory name="Queue_CF_8">
              <sub-deployment-name>Server_group_4</sub-deployment-name>
              <jndi-name>QUEUE_CF_8</jndi-name>
              <security-params>
              <attach-jmsx-user-id>false</attach-jmsx-user-id>
              </security-params>
              </connection-factory>
              <uniform-distributed-queue name="DIS_QUEUE_8">
              <sub-deployment-name>Server_group_4</sub-deployment-name>
              <jndi-name>DIS_QUEUE_8</jndi-name>
              <load-balancing-policy>Round-Robin</load-balancing-policy>
              </uniform-distributed-queue>
              </weblogic-jms>
              But the problem was with the clustering.
              Thanks for your time..

  • MQseries Queue depth

    Hello,
    I am using JMS for accessing MQseries. Can anyone tell me asto how can i find the current depth and maximum depth of a queue using the JMS calls.? I am using IBM java classes for JMS.my MQseries verion is 5.2
    Thanks
    Joe Cherian

    I'm afraid that the JMS spec, for some bizarre reason, do not have any APIs for getting the depth of a queue. So, the only way to find the depth of a queue in JMS is to create a browser and browse every message in the queue, and count them. This is quite a neat solution as long as you only have a few messages. If you have thousands you will spend all your time browsing queues not processing them.
    Also I believe there is also a bug in MQ 5.2 and JMS whereby if you do not browse ALL the messages, but stop halfway through instead, then you will not release some resource that MQ uses. After xx number of doing this ( depends on your maximum open handles for the queue manager ) MQ dies. So if you ARE going to browse an MQ 5.2 queue, browse all of it.
    The way around it we are using is to have JMS adapters for our app, and having mutant/hybrid MQ adapters as well, which use JMS for nearly everything, including transactional gets and puts, and has an MQ queue manager for getting the MQ Series queue depth natively. Not ideal, but it allows us to use JCA/XA etc with MQ Series. I have no idea how you get the max depth of a queue, unless you can find it in the api docs then you may have to use a native call.

  • MDB and Execute Queue

    Hi Folks,
    as we got problems on thread deadlocks using JMS, we decided to define our own thread
    queue to be used by our application. In the documentation it is described, that you
    need to generate all your EJBs with java weblogic.ejbc -dispatchPolicy xyz. By this
    you connect your EJB to the named thread queue, which you will need to add to your
    config.xml.
    What I could find out was, that this works fine for stateful or stateless session
    beans, but it looks like message driven beans do ignore this option.
    So here are my questions:
    Which thread queue is used by message driven beans?
    How can I change the thread queue?
    Many thanks,
    Nicole

    Unfortunately, MDBs do not currently support running on a separate queue. They run on
    the default queue.
    -- Rob
    Nicole wrote:
    Hi Folks,
    as we got problems on thread deadlocks using JMS, we decided to define our own thread
    queue to be used by our application. In the documentation it is described, that you
    need to generate all your EJBs with java weblogic.ejbc -dispatchPolicy xyz. By this
    you connect your EJB to the named thread queue, which you will need to add to your
    config.xml.
    What I could find out was, that this works fine for stateful or stateless session
    beans, but it looks like message driven beans do ignore this option.
    So here are my questions:
    Which thread queue is used by message driven beans?
    How can I change the thread queue?
    Many thanks,
    Nicole

  • MDB and MessageConsumer Queue Questions

    (1) Does a MessageConsumer object, when called on its onMessage() method, provide the same JMS queue processing as a Message Driven Bean (MDB) called on it's onMessage() method? That is, the message remains on the queue until the onMessage() method completes in both cases.
    (2) Does the same apply to a MessageConsumer's receive() method? That is, the message remains on the queue until the next receive is called?
    Thanks

    Unfortunately, MDBs do not currently support running on a separate queue. They run on
    the default queue.
    -- Rob
    Nicole wrote:
    Hi Folks,
    as we got problems on thread deadlocks using JMS, we decided to define our own thread
    queue to be used by our application. In the documentation it is described, that you
    need to generate all your EJBs with java weblogic.ejbc -dispatchPolicy xyz. By this
    you connect your EJB to the named thread queue, which you will need to add to your
    config.xml.
    What I could find out was, that this works fine for stateful or stateless session
    beans, but it looks like message driven beans do ignore this option.
    So here are my questions:
    Which thread queue is used by message driven beans?
    How can I change the thread queue?
    Many thanks,
    Nicole

  • MDB rollback to Queues/Topics

    Can somebody explain the MDB rollback behaviour in Queues and Topics.
    My specific questions are:
    1) When a MDB, listening to a Queue, performs a rollback, does the message go back to the head of the queue (assumption is that the message should go back to the head of the queue)? Is this somewhere in the spec? Seems like different providers have different interpretations, all the JMS providers do not gurantee this behaviour.
    2) If we replace the queue with Topic, where does the message go on a rollback?
    3) Where does the message go when there are multiple subscribers to the Topic? Can the other subscribers that did consume the message successfully get the message again, if a subscriber performs a rollback?
    The JMS specification does not cover these situation very well, so we are left to the mercy of the JMS providers.
    4) Can somebody share the experience in this context, if we are trying to build a 'JMS agnostic' solution, how should we handle this rollback?
    Thanks

    1. Its dependent on the JMS provider. In ActiveMQ 4.x it is replayed to the consumer a number of times before being placed on the head of the queue - so ordering is maintained if the message is successfully processed by the same consumer.
    However ordering is often broken if the message is put back on the head of the queue if you have multiple consumers, since they compete for messages. Though if you have multiple consumers anyway, you often loose total ordering unless you use a technique like Exclusive Queues or Message Groups.
    2. Typically it'll be replayed to the same consumer again. Most JMS providers provide a way to customize the redelivery policy; how many times will it be redelivered before sending to a dead letter queue, what is the replay exponential back off time etc.
    3. Yes. Each topic subscriber gets their own copy of the message. It doesn't matter if one consumer does or does not process the message; other consumers are unaffected.
    4. I'd just retry the operation and rely on the MDB/JMS providers dead letter queue and you should be fine.
    BTW if ever you need a tool to browse the dead letter queues and maybe move messages from the dead letter queue back to the originating queue, you could try Hermes
    http://www.hermesjms.com/
    James
    http://logicblaze.com/

  • MDB for Temporary Queues?

    I have a need for MDB functionality on temporary queues (either with an actual MDB, or by doing the functionality myself, inside the app server). Is that possible?
    The context is as follows:
    An application is deployed to multiple application servers. The application recceives requests that are session oriented. In other words, after the first message of a sequence, subsequent messages from the original sender must go to the same instance that received the first request.
    Hence the goal is to have a queue, unique to the instance, dynamically created (to avoid administrative headaches), that is used to receive the subsequent messages. That queue needs to have multiple consumers on it, each in its own session for parallelism.
    This is sort of like to the standard synchronous messaging pattern, except that the replyTo queue is send on the reply and used on subsequent requests. Also, the application needs to be able to handle a number of these at once (separate threadds).
    Thoughts?

    The broker property imq.autocreate.destination.useDMQ (default set to true) controls whether to use DMQ for temporary destinations as well as for all auto-created destinations. Alternatively you can control at per message level before sending to a destination whether the message should use DMQ by setting the boolean property "JMS_SUN_PRESERVE_UNDELIVERED" (set to false to not use DMQ) to the message.

Maybe you are looking for

  • Synching customization data

    In our HR landscape, the functional team wants to synchronize the customization data down from Production to QAT to DEV. I saw message type CONDA2 - is that appropriate to transfer this data? Also, I ran into an article about using Solution Manager (

  • PO Number is not copied when create SD document from Reference

    Hi Gurus, I created Billing request document (VA01) by reference with a contract (VA41) , but the PO number field ( VBKD-BSTKD) is not copied over. I have checked all the data transfer rountines, but still could not find out. Please help , which data

  • FP installs WIN 10,2,152,32 on vista/ 32/ firefox but wont play content.

    Cannot find any shock wave,macromedia,flash player files on pc, but do see animated fp logo and version installed on Adobe site, have installed and reinstalled several times on firefox and IE8 it will not play content from some web sites.

  • Air 3.7 for Flex on mac

    It sounds so simple and probably should be, but I just spend 3 hours trying to get the most basic setup running and I'm lost in the mess Adobe created. I followed a couple of tutorials and documents but none seem to be working. All I want is to gener

  • Have to send mail CC and body with person details also?

    Hi, I have requirement sending mail TO as wellas CC also. How can i send? TO:Project manager, CC:TeamLeader. In the body, Contact Person, Phone No: These details i have to send. Tell me the procedure to do in workflow? Early reply is highely appricia