Consumers for distributed queues -- writing the JMS API

Hi,
I have Created a cluster MS_01 and MS_02.
JmsServer-MS01 for MS_01 and JmsServer-MS02 for MS_02.
Also have create a distributed queue called DistributedQueue-0 and a distributed connection factory called ConnectionFactory-0.
I have been successfully able to loadbalance sending of messages using the cluster address.
When i try to consume messages the consumers gets pinned to a MS_01. (As expected)
I am looking for ways where in using JMS API i can read messages from both the manages instances.
Appreciate any help.
thanking you all in advance.
Regards
Girish Subbaramu.

Hi,
For consuming messages from a distributed queue, by far the best option is to use a WebLogic MDB, which has internal code designed to work well with WebLogic distributed destinations. When a distributed queue runs in the same cluster as the MDB, the MDB service will ensure that there's an MDB deployment instance that is locally servicing each queue member -- even when the queue members migrate between servers, or when they are added or removed due to configuration changes. When the MDB is communicating with a distributed queue in a remote cluster, an MDB running on a single server will automatically set up consumers for each remote member and will dynamically react to member up/down add/remove events.
If you must use a straight javax.jms client, then I think there are two basic options. The first option is to ensure that that there are more than enough consumers to provide full coverage, and periodically close and re-open the consumers. The periodic close and re-open forces the consumers to load-balance again, and therefore helps handle the case when new destination members become available after the consumers have all attached. The second option is to create consumers directly on each member rather than on the distributed queues logical name (each member has a unique name that's advertised in JNDI).
Hope this helps,
Tom

Similar Messages

  • 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

  • Using the JMS API in Java EE Applications

    Hello to all,
    this is some sort of theoretical question.
    I been reading the JMS documentation for a while.
    1.I could not understand what this statement means :
    >
    This section describes the ways in which using the JMS API in enterprise bean applications or web applications differs from using it in application clients.
    2. What is the difference to use the JMS in java EE web orEJB container and application client ?
    Thanks.

    peterwkc wrote:
    Hello to all,
    this is some sort of theoretical question.
    I been reading the JMS documentation for a while.
    1.I could not understand what this statement means :
    >
    This section describes the ways in which using the JMS API in enterprise bean applications or web applications differs from using it in application clients.
    What a developer is allowed to do is different depending on whether they are writing code to run in a container or not. The container already provides lots of services so some code you would write for outside a container is not needed when you write for a container. There are APIs that you are not allowed for in container code if you want to adhere to the spec.
    >
    2. What is the difference to use the JMS in java EE web orEJB container and application client ?
    Thanks.Read more of that document to find out the differences. Application components in Web/EJBs must not create more than one active session per connection while application clients are allowed to do so.

  • OLE DB provider 'MSOLAP' cannot be used for distributed queries because the provider is configured to run in single-threaded

    Hopefully this will save somebody some trouble.
    Running 64bit Enterprise SQL and SSAS with Service pack 2 installed.
    Also running Proclarity so 32bit mode Reporting Services is running.
    When trying to create a linked server to my OLAP database I was continually getting the following Error:
    OLE DB provider 'MSOLAP' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode. (Microsoft SQL Server, Error: 7308)
    Many posts suggested I select the "in Proc" check box under the olap provider, but this did not help.
    Finally, instead of using the IDE to create the linked server I used a script to call sp_addlinkedserver and used @provider='MSOLAP.3'.  This fixed the problem.
    If you have a more clear idea of why I was having the issue in the first place, feel free to let me know what you think.

    Try this thread:
    https://social.msdn.microsoft.com/Forums/sqlserver/en-US/f02a3921-7d0b-4038-97bb-9f17d381b345/linked-ssas-server-fails?forum=sqlanalysisservices
    Talk to me now on

  • How to retrieve all the tasks for a UserView with the worklist api 10.1.3.1

    Hi,
    I have defined a custom view for user jcooper. The view just displays all the current uncompleted tasks for jcooper.
    I want to use the worklist api to retrieve all the tasks in the view. I first tried it with the following function call:
    taskQueryService.queryViewTasks(workflowContext,viewName, null, null, 0, 0);
    assuming that the viewId in the corresponding java-doc corresponds to the name of the view..However this doesn't work and the method returns a null reference. So viewId is something different than a viewName. Because I cannot find the corresponding viewId for my view (not looked in the db yet, but I don't want to use these ids in my app), I tried the method:
    client.getUserMetadataService().getUserTaskViewList(workflowContext, Partcipant participant);
    However I did not find a method to retrieve a Partipant instance for jcooper in the worklflow api documentation.
    My question now is if someone can help me out to retrieve all the tasks for a specific view. I should be possible I think...
    Thanks!
    Kind regards,
    -Tom

    The second argument (Participant) was added to handle the use case where one user such as an admin or manager needs to retrieve user metadata of another user (offcourse with the required security checks). We will try to do a future enhancement such that if the pariticipant is passed as null then we will assume the metadata is to be retrieved for the workflow context user.
    For now you can define a simple method to create a participant from a workflow context as follows and pass this as an argument to the UserMetadataService call:
    private Participant createParticipant(workflowContext)
    Participant participant = new oracle.bpel.services.workflow.common.model.ObjectFactory().createParticipant();
    participant.setName(workflowContext.getUser();
    participant.setRealm("jazn.com");
    participant.setType("USER");
    return participant;
    // code to retrieve task list...
    UserViewList views = client.getUserMetadataService().getUserTaskViewList(
    workflowContext, createParticipant(workflowContext))
    ...

  • Drivers for different Queuing series in JMS Adapter , Secutity Level..

    Plz can any one provide me JMS Adapter, drivers of different queuing series inTransport protocol.And also security levels in JMS
    Also tell me whn to use the particular queuing series.........

    Hi,
    The queuing series to be is based on the circumstances. If the client is already using MQ, then we need to go for MQ. Similarly for others too.
    For deploying the drivers, go thro this How To guide:
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/3867a582-0401-0010-6cbf-9644e49f1a10
    About security levels, i think normal Message Level and Network level securities can be handled with JMS adapters.
    Regards,
    P.Venkat

  • JMS for WebLogic Server 9.2. Members of distribute queues

    I don't understand concept of the distributed queues. As far as I understand, distributed queues consist of physical queues. How do I create physical queus for distributed queues ? What is the Members tab for Distributed queue ? If I have non-persistent distributed queu , can I have a distributed q that points to the cluster that doesn't have a JMS ?

    Hi,
    I was able to figure out the root cause. I was using the primitive data type "int" for primary key and foreign key for one of the beans in the relationship. After I changed it to "Integer" wrapper type, the issue got resolved.
    -Vinod

  • 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

  • JMS Server on a cluster stores all  msgs posted to Distributed Queue on 1 server failure

              Hi
              I have a Cluster setup with 2 managed servers srvr1 & srvr2 each running its own
              JMS server.
              Product version in use is Weblogic SP2.
              Configured a Distributed Queue and deployed it on both the JMS servers.
              Set the load-balancing to round-Robin and Server-Affinity to False on the connection
              factory.
              The producer is an external client which posts 100 messages to the Distributed
              queue.
              Consumers are MDBs pinned to the respective physical queues on the respective
              JMS servers.
              Each server has its own store.
              Once 100 messages are posted to the Distributed Queue. The messages are distributed
              to
              the 2 Physical Destinations equally i.e 50-50 each.
              While the MDBs are processing the msgs, server srvr1 is brought down at a point
              when it has consumed only 10 of its 50 msgs.
              When the srvr1 is brought up again, i am finding that the store for that JMS server
              contains the 40 unprocessed msgs in its physical queue + the msgs on the other
              queue that were unprocessed at the time this server crashed.
              When srvr1 went down, srvr2 was running and it went on to process all its 50 msgs
              completly. Why would those processed msgs show up again when srvr1 is brought
              up ?
              Please provide some input !!
              Ravi.
              

              The log message is from the distributed destination
              "forwarders". In distributed queues, these forwarders
              automatically move messages from queues without
              consumers to queues that have them (queue
              forwarders are disabled by default). In distributed topics,
              the forwarders serve
              to replicate a published message from the local
              topic member to each of the remote topic members.
              "Raviprasad Athivilli" <[email protected]> wrote:
              >
              >Tom
              >
              >I think you are right. When the server1 is brought up again, its picking
              >up all
              >the messages
              >that were written to the store.
              >
              >But as it starts processing them, i get this exception on the server2
              >that has
              >been running from the beginning.
              >
              ><Oct 10, 2003 6:20:19 PM EDT> <Error> <JMS> <040366> <JMS Distributed
              >Destination
              >member "MyQueue@JMSServer-02" in "MyQueue"
              >unable to accept connection from remote member "MyQueue@JMSServer-01"
              >due to exception
              >weblogic.jms.common.JMSException: can't find
              >queue target jndi table for MyQueue@JMSServer-01 != MyQueue
              >weblogic.jms.common.JMSException: can't find queue target jndi table
              >for MyQueue@JMSServer-01
              >!= MyQueue
              > at weblogic.jms.backend.BEDestination.setupSystemSubscription(BEDestination.java:3466)
              > at weblogic.jms.backend.BEManager.sessionAndTopicSubscriberCreate(BEManager.java:234)
              > at weblogic.jms.backend.BEManager.invoke(BEManager.java:384)
              > at weblogic.jms.dispatcher.Request.wrappedFiniteStateMachine(Request.java:602)
              > at weblogic.jms.dispatcher.DispatcherImpl.dispatchAsync(DispatcherImpl.java:152)
              > at weblogic.jms.dispatcher.DispatcherImpl.dispatchAsyncFuture(DispatcherImpl.java:396)
              > at weblogic.jms.dispatcher.DispatcherImpl_WLSkel.invoke(Unknown
              >Source)
              > at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:362)
              > at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313)
              > at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:821)
              > at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308)
              > at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
              > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213)
              > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)
              >
              >What does this mean ?
              >
              >Ravi.
              >Tom Barnes <[email protected]> wrote:
              >>Seems more than odd. Are you sure that q1 got unprocessed
              >>messages from q2? How did you confirm?
              >>
              >>Perhaps q1 got messages its MDB already processed back again -
              >>an indication that the MDB is throwing Runtime exceptions
              >>or Errors, and the container is rolling back transactions.
              >>
              >>Raviprasad Athivilli wrote:
              >>> Hi
              >>>
              >>> I have a Cluster setup with 2 managed servers srvr1 & srvr2 each running
              >>its own
              >>> JMS server.
              >>> Product version in use is Weblogic SP2.
              >>> Configured a Distributed Queue and deployed it on both the JMS servers.
              >>> Set the load-balancing to round-Robin and Server-Affinity to False
              >>on the connection
              >>> factory.
              >>>
              >>> The producer is an external client which posts 100 messages to the
              >>Distributed
              >>> queue.
              >>> Consumers are MDBs pinned to the respective physical queues on the
              >>respective
              >>> JMS servers.
              >>> Each server has its own store.
              >>>
              >>> Once 100 messages are posted to the Distributed Queue. The messages
              >>are distributed
              >>> to
              >>> the 2 Physical Destinations equally i.e 50-50 each.
              >>>
              >>> While the MDBs are processing the msgs, server srvr1 is brought down
              >>at a point
              >>> when it has consumed only 10 of its 50 msgs.
              >>>
              >>> When the srvr1 is brought up again, i am finding that the store for
              >>that JMS server
              >>> contains the 40 unprocessed msgs in its physical queue + the msgs
              >on
              >>the other
              >>> queue that were unprocessed at the time this server crashed.
              >>>
              >>> When srvr1 went down, srvr2 was running and it went on to process
              >all
              >>its 50 msgs
              >>> completly. Why would those processed msgs show up again when srvr1
              >>is brought
              >>> up ?
              >>>
              >>> Please provide some input !!
              >>>
              >>> Ravi.
              >>
              >
              

  • JMS Queue - 2 Consumers from single Queue

    Hi,
    I have a scenario like, there is a single which has records. Of which some records need to be send to 1 application and some records need to be sent to anothere appln.
    So, there are two consumers for this Queue.
    How to implement this in SOA?
    Is selecting the data based on a flag possible?
    Thanks,
    Priya

    You can use Message Selectors for this. Please refer the below link
    SOA 11g- Message Selector Property in JMS Adapter - Oracle Fusion Middleware Blog

  • Does jms distributed queue support automatic service migration?

    As the migration document of Weblogic mentioned, the jms distributed queue can be manually migrated, but the document doesn't talk about automatic migration of jms distributed queue. Does jms distributed queue support automatic service migration? Anybody can help me? Thanks a lot.

    When you look at configuring JMS, you do something like:
    Create a JMS server that will contain one or more JMS destinations and will live on a particular server instance.
    Next you create a JMS module and target it to a cluster. Within the module you create a distributed queue (destination).
    Note that it is the JMS server which is the so-called pinned service. For pinned services you can configure migratable targets
    the way you want it (http://download.oracle.com/docs/cd/E13222_01/wls/docs81/jms/config.html#1056368)

  • WebLogic 12.1.2 erases subdeployment on Distributed Queue when targeted to multiple JMS Servers

    Update: verified in a 12.1.1.0 (JDK6) cluster - bug does not occur there.
    Hi,
      I have been migrating an 10.3.5.0 server to WebLogic 12.1.2.0 and have been unable to keep the subdeployment dropdown populated in the subdeployment tab of a uniform distributed queue when the subdeployment targets more than 1 JMS Server.
      If I uncheck one of the servers - I work fine - however I would like to target all JMS Servers in the cluster - this used to work fine in 10.3.5.0
      Following
    http://docs.oracle.com/cd/E24329_01/apirefs.1211/e24401/taskhelp/jms_modules/distributed_queues/CreateUniformDistributedQueues.html
      I am able to create a new queue no problem against the multiple-server subdeployment - but when I navigate to the subdeployment dropdown - the target is erased with "None".
    If I save the subdeployment after setting it during the queue create - it is erased
    <sub-deployment-name>MW-JMS-SubDeployment</sub-deployment-name>
    Before:
    <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">
      <uniform-distributed-queue name="HousekeeperControlQueue">
        <sub-deployment-name>MW-JMS-SubDeployment</sub-deployment-name>
        <jndi-name>jms/HousekeeperControlQueue</jndi-name>
      </uniform-distributed-queue>
    </weblogic-jms>
    After:
    <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">
      <uniform-distributed-queue name="HousekeeperControlQueue">
        <jndi-name>jms/HousekeeperControlQueue</jndi-name>
      </uniform-distributed-queue>
    </weblogic-jms>
    Workaround:
    - upon server startup the config is valid - just dont re-save the jms module or the subdeployment target will be erases
    - also when creating a new subdeployment you will be able to select it from a jms distributed queue in the advanced targeting section even if it contains expected multiple JMS servers
    - you will not however be able to edit the JMS queue once created - if there is any change to targeting - recreating the queue is required
      thank you
      /michael

    Update: verified in a 12.1.1.0 (JDK6) cluster - bug does not occur there.
    Hi,
      I have been migrating an 10.3.5.0 server to WebLogic 12.1.2.0 and have been unable to keep the subdeployment dropdown populated in the subdeployment tab of a uniform distributed queue when the subdeployment targets more than 1 JMS Server.
      If I uncheck one of the servers - I work fine - however I would like to target all JMS Servers in the cluster - this used to work fine in 10.3.5.0
      Following
    http://docs.oracle.com/cd/E24329_01/apirefs.1211/e24401/taskhelp/jms_modules/distributed_queues/CreateUniformDistributedQueues.html
      I am able to create a new queue no problem against the multiple-server subdeployment - but when I navigate to the subdeployment dropdown - the target is erased with "None".
    If I save the subdeployment after setting it during the queue create - it is erased
    <sub-deployment-name>MW-JMS-SubDeployment</sub-deployment-name>
    Before:
    <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">
      <uniform-distributed-queue name="HousekeeperControlQueue">
        <sub-deployment-name>MW-JMS-SubDeployment</sub-deployment-name>
        <jndi-name>jms/HousekeeperControlQueue</jndi-name>
      </uniform-distributed-queue>
    </weblogic-jms>
    After:
    <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">
      <uniform-distributed-queue name="HousekeeperControlQueue">
        <jndi-name>jms/HousekeeperControlQueue</jndi-name>
      </uniform-distributed-queue>
    </weblogic-jms>
    Workaround:
    - upon server startup the config is valid - just dont re-save the jms module or the subdeployment target will be erases
    - also when creating a new subdeployment you will be able to select it from a jms distributed queue in the advanced targeting section even if it contains expected multiple JMS servers
    - you will not however be able to edit the JMS queue once created - if there is any change to targeting - recreating the queue is required
      thank you
      /michael

  • JMSHelper throws 'JMS server is not targetted' creating distributed queue

    I am trying to use the 8.1 weblogic.jms.extensions.JMSHelper to create a distributed queue. The target JMS servers are all migratable servers. When calling method createDistributedQueueAsync() I get a JMSException thrown compaining that the [first] JMS server is not targetted. Looking at the code provided in [http://forums.bea.com/bea/thread.jspa?messageID=200023386] which is based on the JMSHelper class source, the exception may be thrown because the target MBean is of class MigratableTargetMBean, whereas the JMSHelper is expecting class TargetMBean. Yet, the 9.0 documentation (which at least documents it) suggests that MigratableTargetMBean is derived from TargetMBean
              Does anyone have experience of this issue or its resolution, short of crafting the code by hand as per the above-referenced reply?

    Hi,
    Just to remember the configuration: 2 managed servers configured as cluster that should be deployed on 2 different machine.
    Following summary of the tests:
         - node manager + admin server + 1 managed server running on the first machine --> server failed to init with error "Server is not in the majority cluster partition"
         - node manager + admin server + 2 managed servers running on the one machine --> servers are running without errors
         - node manager + admin server + 1 managed server running on the first  machine / node manager runs on the second machine --> server on the first machine runs without errors without the famous error ' Server is not in the majority cluster partition'.
    Bottom line, seems that if the node manager is not running on the remote machine, the cluster is not in a stable state and so the single managed server failed to initialize.
    Is it according the documentation / expectations ?
    Thanks,
    Yaakov

  • How do I set the delivery policy for a queue in iMQ 2.0?

    The list on page 67 of the 2.0 administration guide appears to be
    incomplete. Specifically, I'm interested in knowing how to set
    the default delivery policy for a Queue through the jmqobjmgr command.
    I need the valid attribute name to pass in to jmqobjmgr.

    The "queueDeliveryPolicy" is an attribute of a queue
    created in the broker - not in the administered object
    destination so that is why you are not seeing that
    attribute on the list on page 67.
    By default, the broker by will use the "single" queue delivery
    policy unless you choose to change the values of the property
    "jmq.queue.defaultdeliveryPolicy" to SINGLE, ROUND-ROBIN, or
    FAILOVER. If you would like to do this, see the Chapter 4
    in the admin guide on "Starting and Configuring the Broker".
    It may be easier to set the delivery policy for just one queue.
    To do this, you can use the following command:
    jmqcmd create dst -n myQueue -t q -o "queueDeliveryPolicy=f"
    where valid values to queueDeliveryPolicy is f, s, r.
    You can do a 'jmqcmd -H' to get more info on queue attributes or
    see Chapter 6 in the admin guide on "Creating and Destroying Destinations".

  • Cannot retrieve data in all members of my distributed queue

    I have a distributed queue with 3 members, queue member 1, queue member 2, and queue member 3.
    I triggered 2 events separately to go to the distributed queue, and it was successful as the 1st event triggered went to queue member 1 (physical queue1 – located on server 1) and the next event sent on the next trigger went to queue member 2 (physical queue 2 – located on server 2).
    The problem now is, after triggering a job that gets the event from distributed queue, only the event in queue member 1 was picked up. The job got completed without picking up the event in queue member 2 (different VM). The data in queue member 2 was left. The config file for the JMS Queue Connectivity may be seen below:
    jms.url=t3://<MS1_IP>:<MS1_PORT>,<MS2_IP>:<MS2_PORT>,<MS3_IP>:<MS3_PORT>
    jms.connfactory=ConnFactoryName
    jms.timeout=30000
    jms.queue=DistributedQueueName
    Note also that the connection factory is deployed to all managed servers as I could see the connection factory in the jndi tree of each managed server.
    Our job was able to get data from each of the managed server, one by one. An example I tried is I placed an event in queue member 1 then triggered the job, then the data was picked up. Then next, I placed the data in queue member 2 (with no other data in queue member 1 and 3), then the data in queue member 2 was picked up after the job run, and same when placed only in queue member 3.
    The main problem here is when there are data in all of the physical queues (queue member 1 to 3). As if the application is focused only to one physical queue, which shouldn’t be. Researching now how should it read all the members in the distributed queue.

    Hi,
    A comma separated URL list helps a client setup its initial JNDI connection into the cluster - it doesn't directly control load balancing of future JEE EJB, RMI, or JMS calls. By default, for remote clients, JEE calls will automatically load balance a new direct connection randomly among all servers in the cluster, even if the initial JNDI URL only references a single server's address. It's actually not truly random, as there may be internal heuristics that effect the load balance decision, plus the behavior is actually tunable, but, for almost all use cases, its best to stay with the default behavior and think of it as effectively random.
    WebLogic JMS load-balancing actually occurs at three layers: URL/DNS, "smart stub" connection creation (RMI, EJB, and JMS connection factory), and finally the distributed destination layers. For a full end-to-end explanation of load balancing at the different layers of the WL stack, I highly recommend the JMS chapter of the book "Professional Oracle WebLogic".
    What's happening in your case is that JMS individual consumer always load balances to one particular queue member, and then sticks to that queue member for their lifetime. This is expected behavior for consumer load balancing, and is fully documented in the distributed destination documention of the JMS programmer's guide.
    If you want to ensure full coverage of a distributed queue, in order of highest to lowest preference:
    * Most highly recommend: Use a WL MDB or a 11gR1PS3 SOA Adapter (if you happen to be using Oracle's SOA layered product). These automatically ensure that all distributed queue members are serviced by at least one dedicated consumer.
    * Ensure you have more sessions+consumers than queue members. Periodically refresh connections/sessions/consumers in order to ensure that newly started members are serviced even when all consumers are already connected (eg, code your clients to reconnect every few minutes).
    * If your application is not performance sensitive, configure the "queue forward delay" setting on a distributed queue. Messages that are trapped on a queue member with no consumers for longer than this delay will be automatically forwarded a member that has consumers.
    * Least recommended, very advanced usage only: Code clients to use the new 10.3.4 public "destination availability" extensions. These extension APIs provide a notification service for distributed destination member up/down events.
    Regards,
    Tom

Maybe you are looking for

  • DateTime format

    Hello, We're currently working project that uses SharePoint 2013 platform to do the heavy lifting. One of the requirements we have is that system must comply with various acts which includes date and time formatting. The problem we're having is that

  • Update 10.2.2 older ipod/iphone sync cables no longer work.

    Update 10.2.2. I updated to 10.2.2 and my older ipod/iphone sync cables no longer work. Im talking about the cables with the longer connector and the connector locks not the new style that is a short plug with no lock. Anyone else having this issue?

  • Photoshop CS4 Crash on save

    We were getting repeated crashes on save when saving to our file server. So I finally moved one of our users to saving locally only to troubleshoot the problem. Now he is getting crashes when saving locally. Crash logs have been sent, but I would lik

  • Adobe Reader 9.4.5 - Patch could not be open

    I have Adobe Reader 9.4.5 installed.  On the administrater side I can print from Adobe but use side I can NOT.  When I try to reisntall ore remove it I get the message THis patch package could not be opened. Verity that the patch package exists and t

  • Ease in/out for a scaling image?

    I have an image with a keyframe on the first frame and one on the last, and I have the image scaling up on the last frame. I'm not happy with how CS6 is scaling the image up, I would like to have it do it smoother. I right click on the last keyframe