Persisting Messages in Buffered Queues

Hello Everyone,
As per the oracle documentation http://docs.oracle.com/cd/B28359_01/server.111/b28321/strms_prop.htm#i1006905
LCRs that were captured by a capture process are always stored in a buffered queue, but LCRs that were captured by a synchronous capture are always stored in a persistent queue.
This means that if we use Capture process and server goes down( or is restarted), we will loose those messages in buffered queues as messages are stored in memory.
1) Is there a way to force capture process to persist the message into persistent queue?
2) Is there a way to recover the messages from buffered queue when we restart the server?
Please let me know if you have some ideas / some insights for above two cases.
Thanks
Nithin
Edited by: 906226 on Jan 5, 2012 11:20 AM

Hello,
This is really a Streams question.
When the database goes down the buffered messages are lost. However when the instance restarts the Capture re-mines the redo logs from the required_checkpoint_scn and then re-enqueues the LCRs. The apply also keeps track of where it was at via the apply progress So nothing is lost in the Streams scenario when an instance goes down. This is discussed in the documentation.
In the AQ world if you are using a buffered queue then the messages would be lost and the application would have to handle that situation.
Thanks
Peter

Similar Messages

  • Messages in Buffered queue not beeing applied

    Hi All,
    Im running a streams environment. The receiving server crashed and was restarted. The apply process was restarted and the buffer was flooded with messages. Flow control initiatied on the sending database. The apply process doesn't show errors, but there are 5001 messages in the queue that arn't beeing applied. I' ve tried restarting the apply process and increased the number of parallel apply processes. Purging the queue doesn't seem like a good idea since the I will loose data. What can I do?
    btw The messages in de queue seem to be in defered state. I dont know if this is of any importance...
    Another thing that struck me as odd was the following:
    Coordinator Low Watermark: 11063412548
    Reader Oldest SCN: 11063412382
    I would assume the Oldest SCN would be equal or higher that the Coordinator low watermark because messages are first beeing read, then coordinated then applied right?
    and while I' m at it: it is no longer possible to disable the queue from Grid Control. If I try to, what happens is, that the status becomes disabled (red downward arrow) but the state remains:"DEQUEUEING MESSAGES"
    kind regards,
    Erik
    Edited by: erikros on Apr 28, 2010 2:47 PM
    Edited by: erikros on Apr 28, 2010 3:05 PM
    Edited by: erikros on Apr 28, 2010 3:08 PM

    Query 1
    APPLY_NAME : P_APP1
    Latency in Seconds : 29139
    Message Creation : 2010-04-27 14:48
    Apply Time : 2010-04-27 22:54
    APPLIED_MESSAGE_NUMBER : 11063412548
    Query 2
    CAPTURE_NAME : P_CAP1
    STATE : PAUSED FOR FLOW CONTROL
    CAPTURE_TIME : 2010-04-29 07:41
    CAPTURE_MESSAGE_NUMBER : 11063460122
    CAPTURE_MESSAGE_CREATE_TIME : 2010-04-27 14:55
    ENQUEUE_TIME : 2010-04-29 07:41
    ENQUEUE_MESSAGE_NUMBER : 11063460122
    ENQUEUE_MESSAGE_CREATE_TIME : 2010-04-27 14:55
    AVAILABLE_MESSAGE_NUMBER : 11076534248
    The second query had some fields in it that weren't supported by my version of Oracle 10.2. I replaced them with some others....
    Edited by: erikros on Apr 29, 2010 8:24 AM

  • Is message persistance with 3rd party queues implemented?

    Is message persistance with 3rd party queues implemented for 9.0.2 or 9.0.3 prev?
    I am not able to use Oracle JMS and want to try implementing this.
    Documents on how to implement this would be helpful.
    thanks,
    Isaac

    OC4J 9.0.2 is certified with few JMS providers like MQSeries, SonicMQ, SwiftMQ, etc. Please look at the Services Guide that documents how to use 3rd Party JMS providers.
    regards
    Debu

  • JMS Queue - Save changes made to persistent messages

    Good afternoon,
    I have set up a queue with persistent storage. To access the messages in the queue, I use a queueBrowser.
    I retrieve a given message (in fact an ObjectMessage) without acknowledging it, process the data it contains, and then set the processed data as the new Object of my ObjectMessage.
    However, these modifications are not taken into account in the persistent storage. That is, if I reboot my server, the modifications are lost - although the message is still present in the queue.
    Does anyone have any idea ?
    Thank you very much,
    As an exemple, here is a sample of my code :
    QueueSession qSession = null;
    QueueBrowser qBrowser = null;
    try {
    qSession = ConnectionFactory.getSessionClientAcknowledge();
    Queue queue = QueueFactory.getInstance(queueName);
    qBrowser = qSession.createBrowser(queue);
    Enumeration queueEnum = qBrowser.getEnumeration();
    while (queueEnum.hasMoreElements() && !bFoundIt) {
    Message msg = (Message)queueEnum.nextElement();
    if (msg instanceof ObjectMessage) {
    DataList currentDataList = (DataList)((ObjectMessage)msg).getObject();
    if (currentDataList != null) {
    DataMap currentInfo = currentDataList.getDataMapAt(0);
    msg.clearBody();
    ((ObjectMessage)msg).setObject(null);
    Message was edited by:
    Daedin

    You cannot edit messages in place. You need to copy them and send them to the same or another queue.
    JMS != JDBC...
    Regards,
    Colin.
    http://hermesjms.com

  • JMS messages stuck in queue in weblogic v923 cluster

    Hi all,
    Enviornment details:
    In our pre-production weblogic v923 cluster enviornment with Oracle 10g database, there are 10 server boxes with 2 managed nodes running on each server box in linux enviornment.
    There are 3 JMS queues and 1 error queue per managed node.
    All the queues are durable and the persitence store is a database table. There is a single database table per single managed node.
    High loads of JMS messages from client applications coming on each of the 3 JMS queue are processed by the cluster on daily basis.
    The JMS messages that failed to be processed the very first time due to the application logic exceptions are put on error queue since the retry is set to zero on the non-error queue.
    The application exceptions are logged to a database table for futher reference.
    The falied messages from the error queue are read by spring based MDP and resent to the application for reprocessing.
    If no application exceptions, the message will be persisted in a relational database; in the case of failures, MDP code puts the failed message back on to the error queue.
    The auto_ack is true on the JMS message.
    It is observed about less than 1% of the messages fail the original processing and are in error queue on daily basis.
    99.9% of the time, the reprocessing of the messages from the error queue is a success.
    Currently due to some obvious reasons, the system administrator stops a managed node when the disk is full and start a different managed node on the same server box. This approach will be stopped in the very near future so that all nodes on all servers are running at any point of time by making few enviornment changes.
    Problem:
    1a) Occasionally, it is observed that 1 - 4 JMS messages are stuck in the error queue. There are no signs of reprocessing as there are no application exceptions or the corresponing insert into the database. The JMS persistence store table still has the JMS message.
    1b) It is observed that over time, the same JMS messages that were originally stuck on server 1's managed node A are no longer there but are found in a different node (say node B) on a different server box.
    As far as I understand the JMS, a message could be in a Pending state if MDP (in my case) does not automatically send ACKNOWLEGMENT back due to an issue in the Spring Defaultlisternercontainer before calling MDP's onMessage(). I am not sure as what happens to that status over time).
    It is also observed that the stuck messages content is not much different than the other messages that are processed fine.
    Any pointers/input is highly appreciated.
    Thanks in advance for your valuable input and time.

    Off the top of my head, I can only think of two reasons why a message might move from node to node:
    (A) An application is dequeueing them and enquening them elsewhere.
    (B) The application is using distributed queues, and the distributed queue has been configured to enable "queue forwarding". The forwarding feature automatically moves messages from distributed queue members that have no consumers to members that do have consumers. Queue forwarding is sometimes enabled as a work-around to better enable MDP support of WL distributed destinations, unlike WebLogic MDBs, MDPs have no container logic to ensure that all members of a distributed destination are serviced by a consumer under all circumstances...
    Regards,
    Tom

  • Message Tracking and Queue Viewer access is denied - Exchange 2010

    Hello,
    I am experiencing Message Tracking and Queue viewer problems on my exchange server.
    Message Tracking problem
    When i run message tracking via EMC or powershell, i receive the following error;
    Failed to connect to the Microsoft Exchange Transport Log Search server on computer "myserver.mydomain.com.br". Verify that a valid computer name was used and the Microsoft Exchange Transport Log Search service is started on the target computer. The
    error message is: "Access is denied".
    Exchange Transport Log Search service is confirmed running and have tried by restarting the service
    Logon user is a member of Domain Admins, Enterprise Admins and Exchange Organization Administrators
    Message Tracking Logs are generated properly
    Queue Viewer problem
    When i run Queue viewer, i receive the following error;
    The Queue Viewer operation on computer "myserver.mydomain.com.br" has failed with exception. The error message is: Access is denied. It was running command.............................................................
    My server information are as follow;
    4 Exchange Server 2010 sp3
    2 Mailbox Server and 2 Hub/CAS
    Mail-flow is working fine
    What should I grant permission for a group of users can have access to the Message Tracking ?
    Regards,

    Hi!
    The group rule was created as described below. The error persists!
     [PS] C:\Windows\system32>Get-RoleGroup "Exchange Access Message Tracking" | fl
    RunspaceId                  : 4229f35d-90f1-4c4e-822d-387979921052
    ManagedBy                   : {bancobmg.com.br/Users/Raphael Henrique Duarte Campos}
    RoleAssignments             : {Message Tracking-Exchange Access Message Tracking}
    Roles                       : {Message Tracking}
    DisplayName                 :
    ExternalDirectoryObjectId   :
    Members                     : {bancobmg.com.br/Users/Raphael Henrique Duarte Campos}
    SamAccountName              : Exchange Access Message Tracking
    Description                 :
    RoleGroupType               : Standard
    LinkedGroup                 :
    Capabilities                : {}
    LinkedPartnerGroupId        :
    LinkedPartnerOrganizationId :
    IsValid                     : True
    ExchangeVersion             : 0.10 (14.0.100.0)
    Name                        : Exchange Access Message Tracking
    DistinguishedName           : CN=Exchange Access Message Tracking,OU=Microsoft Exchange Security Groups,OU=Global,DC=ba
                                  ncobmg,DC=com,DC=br
    Identity                    : bancobmg.com.br/Global/Microsoft Exchange Security Groups/Exchange Access Message Trackin
                                  g
    Guid                        : 0957152d-2073-4f75-b40e-63f45eb20f67
    ObjectCategory              : bancobmg.com.br/Configuration/Schema/Group
    ObjectClass                 : {top, group}
    WhenChanged                 : 06/02/2014 16:25:26
    WhenCreated                 : 06/02/2014 16:25:26
    WhenChangedUTC              : 06/02/2014 18:25:26
    WhenCreatedUTC              : 06/02/2014 18:25:26
    OrganizationId              :
    OriginatingServer           : bmg190.bancobmg.com.br
    [PS] C:\Windows\system32>Get-ManagementRoleAssignment "Message Tracking-Exchange Access Message Tracking" | fl
    RunspaceId                   : 4229f35d-90f1-4c4e-822d-387979921052
    User                         : bancobmg.com.br/Global/Microsoft Exchange Security Groups/Exchange Access Message Tracki
                                   ng
    AssignmentMethod             : Direct
    Identity                     : Message Tracking-Exchange Access Message Tracking
    EffectiveUserName            : All Group Members
    AssignmentChain              :
    RoleAssigneeType             : RoleGroup
    RoleAssignee                 : bancobmg.com.br/Global/Microsoft Exchange Security Groups/Exchange Access Message Tracki
                                   ng
    Role                         : Message Tracking
    RoleAssignmentDelegationType : Regular
    CustomRecipientWriteScope    :
    CustomConfigWriteScope       :
    RecipientReadScope           : Organization
    ConfigReadScope              : OrganizationConfig
    RecipientWriteScope          : Organization
    ConfigWriteScope             : OrganizationConfig
    Enabled                      : True
    RoleAssigneeName             : Exchange Access Message Tracking
    IsValid                      : True
    ExchangeVersion              : 0.11 (14.0.550.0)
    Name                         : Message Tracking-Exchange Access Message Tracking
    DistinguishedName            : CN=Message Tracking-Exchange Access Message Tracking,CN=Role Assignments,CN=RBAC,CN=BANC
                                   O BMG SA,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=bancobmg,DC=com,DC=br
    Guid                         : c3768a00-3f36-4532-b586-a06842a85e24
    ObjectCategory               : bancobmg.com.br/Configuration/Schema/ms-Exch-Role-Assignment
    ObjectClass                  : {top, msExchRoleAssignment}
    WhenChanged                  : 06/02/2014 16:25:26
    WhenCreated                  : 06/02/2014 16:25:26
    WhenChangedUTC               : 06/02/2014 18:25:26
    WhenCreatedUTC               : 06/02/2014 18:25:26
    OrganizationId               :
    OriginatingServer            : bmg190.bancobmg.com.br
    How can I identify if there is any setting to be done?
    Thank you!

  • 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

  • Persistent vs. in-memory queues

    Hello Experts,
    we are developing an SMS-based app. As of now, we imagine it like this:
    - Receiver thread reads incoming SMS messages and puts them into a queue
    - Processor thread reads messages from the queue and executes logic on them
    - Logger thread reads the same messages as Processor and logs them into a database.
    We decided to go for in-memory JMS solution because of performance. My questions are
    (1) since we are worried that database operations might not put up with message throughputs during peak periods, we create that Logger thread. My understanding here is, if there are to many SMS to get logged into the DB, they will still be processed by the Processor, but logged with some delay. Is that correct? Or should we use persistent JMS? In such case, wouldn't it slow down the app?
    (2) having those 2 consumers, should we go for queues or topics? All threads will run on the same machine.
    Any help is much appreciated!
    Thanks, regards,
    Pawel

    Hi,
    I think that nimo's solution is the one to go for. However, if you cannot afford to loose a SMS message that is added in the processor queue then, you must use persistent messages. Now, if you are using an additional �logger� queue, I guess that you cannot afford a processed message not being logged. Hence, your processor thread should consume a SMS message and send a logging message within the same transaction. Moreover, logging messages must be persistent (even if your SMS messages are not persistent). That should work well apart from the fact that you may want to consume your logging message and update your database within the same transaction. If you don�t do that and have troubles when updating your DB, a message is removed from the logging queue and the DB is not updated leaving your system in an inconsistent state. To perform DB updates and message consumption within the same transaction you must use a JMS provider that offers XA support. A MDB will handle XA transaction for you. However, if you don�t want to use a heavy weight app server you can go for Arjuna MDS that provides XA support as well.
    Hope this helps
    Arnaud
    www.arjuna.com

  • JMS - remove persistent messages from memory

    Hi,
    I have a problem with RAM and JMS. I have to store many JMS-messages (overall size
    of more than 2GB). By default they are stored in RAM and in the database.
    How can I configure WL not to store all messages in RAM.

    Do you mean Time to Live Override value that we set in Overrides tab for the jms queue.Yes. Time to Live override can be used for that purpose.
    Do all messages get stored in persistent (file)store while a jms server is up or only the messages with certain status like "Pending" get stored in jms.If yes,do the >pending messages get automatically deleted once the messages are read by the client application.All persistent messages gets stored in the jms store which includes messages in Messages Current ( status - visible ) state.
    Some of the non persistent messages which gets paged out to free physical memory also end up in the store.
    Messages get deleted from the store, but file stores doesn't relieve the disk space to OS after deleting ie file stores never shrink in size automatically. You can even end up with a huge file store even though no messages are pending in any of the queues under it.

  • Did anyone tried Rejection Message Handler via Queue based method?

    Dear All,
    I am presently doing a Rejected Message Handler process and successfully implemented with File based and Web Service based. But I am not getting the clue for Queue based. We can enqueue the rejected message into queue as a JMS message via this method. But the URI format they have given is *"jdbc:oracle:thin:@<host>:<port>:<sid>#<un>/<pw>#queue"*. Format includes jdbc connection string along with queue name. For this I have created JMS module with JDBC Persistent store and created queue in it. But still I am not able to enqueue the message inside the queue. Also, is there anyway to see the queue names inside the DB. Did anyone tried this method? Could you please share the info??

    WL JMS Queue consume>BPEL1 (One way) invoke>Mediator service (one way) route> BPLE2 (one way). Also I have added transaction properties in BPEL1 and 2 + References + Services.
    Now, if there is a fault in BPEL2 the transaction should be rolled back in BPEL1 and the message should be seen in the WL queue itself. But that is not happening in my case. Everything is getting rolled back upto a point just after the >recieve activity in BPEL1 except the message is not getting rolled back to queue.There will be 2 transactions in this scenario : 1) jms queue to soa hydration store 2) soa-hydration to bpel execution.
    This is the behaviour for 1 way or async interfaces , jms adapter thread completes its transaction work after persisitng to dehydration store and another bpel system thread starts work executing the bpel code after retrieving the message off the db in a separate transaction. So the rollback you are seeing is only applicable for 2nd transaction which roll backs to the dehydration store instead of the queue.
    For synchronous interfaces, the same adapter thread will be involved for complete message processing including bpel code execution. So I think if you want to get the jms queue within the same transaction you can try set up the interfaces to be sync, even with dummy responses. This might make jms adapter thread to start a transaction --> read message off queue within the same transaction --> execute bpel code within same transaction --> complete/rollback transaction based on bpel code execution.

  • Persistent Messages, What heppens if a system is started!

    Hi,
    I am new to JMS and trying to understand. I have a Web Service that put messges on a queue. Now on the consumer side I have a Message Driven Bean. What if my MDB is not available and the WS puts some messages in a queue. The messages are still in a queue but not consumed as MDB is not available. Now I restarted the whole system and server and redeployed the MDB but I don't see any messages being consumed by MDB even though there are some messages that are put by Web Service before starting the System. Are the messages lost if in a queue but not yet consumed and a system or server is restarted.
    How can I make the messages available in a queue all the time even after a restart. Here is a snippet of code that ques the messages.
    InitialContext context = new InitialContext();
    QueueConnectionFactory fac = (QueueConnectionFactory)context.lookup("jms/MainQueueConnectionFactory");
    QueueConnection conn = fac.createQueueConnection();
    QueueSession session = conn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    Queue que = (Queue)context.lookup("jms/MainQueue");
    QueueSender sender = session.createSender(que);
    MapMessage message = session.createMapMessage();
    message.setString("Subject","subject");
    message.setString("Content","Content");
    sender.send(message);If messages gets lost if the system or server is restarted then what's the point of Persistent Messages. Any help is appreciated.
    Thanks

    How do I set it never to expireBy setting the message time-to-live to zero. This can be done on the message and possibly on the connection factory. I'm pretty sure the default is zero anyway, but couldn't find this in the spec - http://java.sun.com/products/jms/docs.html
    I believe all the messages are by default persistentThis depends on your JMS Provider. See you providers docs for how to configure for persistent messaging.
    Where exactly in queue definition any small sampleAgain this depends on your JMS provider. I don't have experience of your app server so I can't provide and example - sorry.

  • Persisted messages without durable subscriptions

    Does weblogic JMS support PERSISTED MESSAGES without durable subscriptions. As per jms spec message persistence does make sense even without durable subscriptions in case when the JMS server fails before a message is sent and acknowledged.
              "A JMS provider must deliver a PERSISTENT message once-and-only-once. This means a JMS provider failure must not cause it to be lost and it must not deliver it twice."
              This implies that a persisted message will be persisted before sending and if JMS server fails, it resends the message to available consumers when server is back up and has nothing to do with durable/non-durable subscriptions.
              Please let me know what you guys think and if it is supported in weblogic JMS.
              Thanks,
              -Raj

    - Topics require durable subcriptions to persist messages. This is a standard part of the JMS API. Nondurable subscribers have absolutely no need for persistence by definition - as such subscriptions exist solely for the life of the client's connection.
              - And yes, queues support persistence. This is required by the JMS spec, which BEA fully implements.
              - True "exactly-once" behavior usually requires the use of transactions in conjunction with JMS. This ensures that the message being processed and any related application work either atomically all fails or all succeeds.
              The above applies to all JMS vendors.
              Tom, BEA

  • Persistent and Non-Persistent messages coexisting

    Hi all,
    I'd like to know if it is possible to send a persistent and a non-persistent message over the same queue using the "deliveryMode"
    argument from "send" method.
    Thanks.

    Yes.
    James
    http://logicblaze.com/

  • Unable to receive notifications of new messages arriving on queue

    I was wondering whether any AQ experts out there could help me....
    I have an Oracle AQ queue and a .net service which listens and dequeues messages from the queue. The .net service is written (using ODP.net) to execute a poll of the queue upon startup (in order to process anything on the queue initially), and thereafter to hook into the relevant ODP.net event (happens to be OracleAQQueue.MessageAvailable) such that anything that subsequently arrives on the queue gets dequeued.
    Now, before you tell me to head off to the odp.net forum, I will add very quickly that we have this code in both DEV and TEST environments and it works fine. The queue happens to be a multiple-consumer queue, so the service subscribes as a particular consumer and everything hangs together. My problem is that we promoted all this code to LIVE a couple of days ago and although we are able to dequeue messages no problem we are no longer receiving MessageAvailable notifications.
    Now, I come from a .net background and am 100% sure that the .net code on our Live servers is the same as the code on our Test servers, save for the connection string. So I believe that the problem is more database- or queue-config-related than software-related.
    I do not have a high degree of Oracle knowledge in this area but what I can say is that when we start our .NET service, it is happily able to do the initial poll of the queue and to dequeue any messages. So this says to me that, fundamentally, we're not far off. i.e. it isn't anything really dumb like the queue doesn't exist in the live environment! It is purely that the MessageAvailable event never fires.
    I guess my question is fairly open, then. Given what I have said, can anyone think of reasons why this could happen?
    Things I have already thought of include:
    - different versions of ODP drivers. Not so, I supervised their installation myself on each environment.
    - firewall on the Live database blocking comms? I mean, presumably there is some tcp/udp comms going on underneath the MessageAvailable subscription. I don't believe this to be the case but if anyone knows where I can find out in more details how this works I'd be grateful, if only because it would allow me to ask more specific questions of the DBAs/Server admins
    - my initial hunch was that it was something with the consumer not being set up fully (the .net code uses the consumer name to register both to dequeue messages and to subscribe to MessageAvailable notifications). Not I am told that this is not the case and that the consumer has been set up properly, but I'm still a little suspicious.
    Anyway, any help would be gratefully received.
    Pete

    Hi Pete,
    Together we may be able to work this out ... I have a good level of knowledge on the database side of AQ but know nothing about ODPAQ :)
    Have you seen the following documentation section? Could there be some restrictions on the production host on the ports?
    Oracle Data Provider for .NET opens a port to listen for notifications. HA events, load balancing, and database change notification features also share the same port. This port can be configured centrally by setting the database notification port in an application or Web configuration file. The following example code specifies a port number of 1200:
    <configuration>
    <oracle.dataaccess.client>
    <settings>
    <add name="DbNotificationPort" value="1200"/>
    </settings>
    </oracle.dataaccess.client>
    </configuration>
    If the configuration file does not exist or the db notification port is not specified, then ODP.NET uses a valid and random port number. The configuration file may also request for a random port number by specifying a db notification port value of -1.
    The notification listener, which runs in the same application domain as ODP.NET, uses the specified port number to listen to notifications from the database. A notification listener gets created when the application registers with OracleAQQueue.MessageAvailable event. One notification listener can listen to all notification types. Only one notification listener is created for each application domain.
    Thanks
    Paul

  • How to set up the maximum number of messages on a queue programmatically

    Hi,
    I am using IMQ 3.5 to implement a message layer for one of my projects. I created a "Job Status Queue", which receives job status report from a java application every minute. But I just want to keep the most current status report instead of all the job running history. How can I restrict the maximum number of messages to 1 programmatically?
    Any suggestion or help will be appreciated.
    Xiaoyun Tang

    You can't limit the destination size programmatically, but you can do it administratively and associate a behavior to occur when the limit is reached. In your case it sounds like you want a queue, 1 message deep, and to discard the oldest message when the queue is full. When you create the physical queue on the broker you can specify these attributes (you can also update them on an existing queue). For example:
    imqcmd create dst -t q -n StatusQ -o maxNumMsgs=1 -o limitBehavior=REMOVE_OLDESTFor more information see Chapter 6 of the Message Queue Administration Guide. In particular the "Managing Destinations" section:
    http://docs.sun.com/app/docs/coll/MessageQueue_35_SP1
    Joe

Maybe you are looking for

  • Time Machine keeps "Backing Up", but doesn´t starts.

    (am doing copy and paste of this question from other site which I posted, so to fix the issue, don´t get freaked out) Hey everyone. I had my time machine in only wifi mode for like the last month or so, then I redicided to use the backing up feature

  • Accessing portal dictionary tables from Web Dynpro project

    Hi Am a new to whole portal and webdynpro thing, and I hope that you can help here I created a new dictionary project through NWDS and created a table with columns and I successfully deployed it I also created a web dynpro project and I added a TABEL

  • Purchase Order Table's "Field Name required"

    Hi Experts, Can anybody tell me specific table names and filed names for "Invoice Quantity" and "Delivery Quantity" for Purchanse Orders? Thanks a lot.

  • How to configure lpd in ubuntu

    Hi Gurus I've installed SAPGUI for Java 7.20 in Ubuntu 10.10, I also have a printer Cups/pdf installed but I can't print documents via lpd. Is there something else to configure? Thanks in advance. Rolando

  • Help on DAO pattern

    Hello! I'm having a problem implementing the DAO pattern. Suppose that I have two database tables: emp(id, name, sex, deptid) dept(id, name) If I follow the DAO pattern, I use two DAO interfaces, one for each table, and "entity". EmployeeDAO, and Dep