Expiration of messages in Queue + OSB

I am working on a prototype and I have the following scenario :
I have on ALSB (OSB) a JMS based Proxy Service that uses a queue in order to get the messages.
On the queue are put SOAP messages that are secured on message level.
There is a digest expiration on Domain Level that is set to 300 ms by default.
This means that the message once is created and reach the proxy it has to be in this 300 ms time frame.
==> Queue ==>Security Check on JMS Proxy Service ==> Message Flow
Problem nr 1)
In peak time i estimate that since on the queue to have maybe more then 1000 messages and 300 ms would not be enough.
If i modify this digest expiration on Domain Level i affect the other applications that are deployed also on ALSB (OSB) and i expose them to security breach.
Is there a way of solving this ? 300 ms is too small for such thing....
Problem nr 2)
The message pass the proxy (the security on message level) but in the message flow due to some exception (various reasons that are not important now) the transaction is rolled back and the message "is put back on the queue".
Now is the funny part: BEcause of the Digest Expiration Time which is very short the message for sure will expire until the redelivery (ususaly minutes) will be done.
So why a messages that already passed security is checked again on retry ? Can't this be avoided somehow ?
Thank you.

Problem nr 1)
In peak time i estimate that since on the queue to have maybe more then 1000 messages and 300 ms would not >be enough.
If i modify this digest expiration on Domain Level i affect the other applications that are deployed also on ALSB >(OSB) and i expose them to security breach.
Is there a way of solving this ? 300 ms is too small for such thing....I think message expiration can be setup on a proxy level by setting up a WS Security policy on the WSDL rather than at the domain level.
<wsp:Policy wsu:Id="MessageAge" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401->wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
><wssp:MessageAge Age="300" xmlns:wssp="http://www.bea.com/wls90/security/policy"/>
></wsp:Policy>
Problem nr 2)
The message pass the proxy (the security on message level) but in the message flow due to some exception >(various reasons that are not important now) the transaction is rolled back and the message "is put back on the >queue".
Now is the funny part: BEcause of the Digest Expiration Time which is very short the message for sure will >expire until the redelivery (ususaly minutes) will be doneSimple solution would be to configure the JMS Proxy where you have the WS-Security check to be a pass through and pass the message to another jms queue which can be listened to by JMS proxy which does validation and remaining processing.

Similar Messages

  • Expiration of messages in Queue  + OSB (part 2)

    I am working on a prototype and I have the following scenario :
    I have on ALSB (OSB) a JMS based Proxy Service that uses a queue in order to get the messages.
    On the queue are put SOAP messages that are secured on message level.
    There is a digest expiration on Domain Level that is set to 300 ms by default.
    This means that the message once is created and reach the proxy it has to be in this 300 ms time frame.
    ==> Queue ==>Security Check on JMS Proxy Service ==> Message Flow
    Problem nr 1)
    In peak time i estimate that since on the queue to have maybe more then 1000 messages and 300 ms would not be enough.
    If i modify this digest expiration on Domain Level i affect the other applications that are deployed also on ALSB (OSB) and i expose them to security breach.
    Is there a way of solving this ? 300 ms is too small for such thing....
    Problem nr 2)
    The message pass the proxy (the security on message level) but in the message flow due to some exception (various reasons that are not important now) the transaction is rolled back and the message "is put back on the queue".
    Now is the funny part: BEcause of the Digest Expiration Time which is very short the message for sure will expire until the redelivery (ususaly minutes) will be done.
    So why a messages that already passed security is checked again on retry ? Can't this be avoided somehow ?
    Thank you.

    These question look like they are very specific to OSB, rather than basic JMS -- which has no concept of message level encryption -- I suggest reposting to the OSB newsgroup instead.

  • Expire messages in queue

    I am wondering if there is anyone that knows how to execute code to expire certain messages in a queue after they have been enqueued.
    I only want one message at a time in the queue that has the same username/tablename combo.
    USERNAME is stored in corrid in the queue table:
    message_properties.Correlation := NEW_USERNAME;
    and tablename is a property:
    message.set_string_property(property_name => 'guid',
    property_value => P_TABLE_NAME);
    Example:
    1. when a table is update in the db, a message is enqueued with username and tablename.
    2. when a client application connects to the database, if there are messages for it's username/tablename it runs a query.
    Problem:
    If there were hundreds of updates with the same username/tablename, then there will be hundreds of messages waiting for the client when it connects. Thus the client will runs hundreds of queries...DON'T want this.
    Thanks ahead of time

    Hello,
    You're right. When the journaling mailbox reaches the configured storage quota, the journaling mailbox will stops accepting journal reports. Exchange will hold undelivered journal reports in a mail queue and tries to redeliver them until delivery is successfully.
    It will cause high messaging traffic. So I recommend you configure journaling mailboxes without storage quotas or configure an alternate journaling mailbox.
    You can configure an alternate journaling mailbox, it will receive the journal reports as attachments in the NDRs generated when the journaling mailbox or the server on which it's located refuses delivery of the journal report or becomes unavailable.
    Could you explain the the max length of the queue? It refers to DatabseMaxCacheSize or others. If it means DatabaseMaxCacheSize, you can modify the value in EdgeTransport.exe.config file.
    My environment is exchange 2010. At present, there is no performace issue. I recommend you use performance counters to monitor the journaling agent.
    I'm afraid that there is no way to configure the journal report messages that will never expire.
    If I have any misunderstanding, please free let me know.
    Cara Chen
    TechNet Community Support

  • Drop messages in queue that have a blank sender

    I'm getting hundreds of messages in the Queue where the From Address is < >. 
    Do I just let these build up or is there a setting somewhere that would just drop the message if it has a blank sender?
    Here is an example of one that I've received;
    Identity: Pebbles\512\21474838371
    Subject: Undeliverable: MUST READ: Vehicle's Below Kelly-Blue-Book*
    Internet Message ID: <[email protected]>
    From Address: <>
    Status: Ready
    Size (KB): 10
    Message Source Name: DSN
    Source IP: 255.255.255.255
    SCL: -1
    Date Received: 5/27/2014 11:51:09 AM
    Expiration Time: 5/29/2014 11:51:09 AM
    Last Error: 400 4.4.7 Message delayed
    Queue ID: Pebbles\512
    Recipients:  [email protected];2;2;[{LRT=};{LED=400 4.4.7 Message delayed};{FQDN=};{IP=}];0;CN=outbound,CN=Connections,CN=Exchange Routing Group (DWBGZMFD01QNBJR),CN=Routing Groups,CN=Exchange Administrative Group (FYDIBOHF23SPDLT)....
    1 email server in domain; Exchange 2013 sp1/Win2012 Standard
    PennyM

    On Exchange 2010 you have antispam agents that can help you discard such messages.
    Sender filtering has a check box called drop messages with blank senders select that and restart the transport service on the servers to get that updated quickly.
    In 2013 server, you have sender filtering as well.

  • Prosecced messages in queue

    Hello!
    Came across puzzle when do dequeue messages:
    We want to dequeue all messages for particular consumer.
    We do dequeue with no_wait, first_message, consumer_name.
    It works all right.
    All messages for specified consumer is dequeued.
    Immediately querying view AQ$QUEUE_T_QUEUE_x - we can see that dequeued messages are in 'PROCESSED' status
    and in 'READY' status in table QUEUE_T_QUEUE_x.
    Wait some Time - query view/table again - and we dont see them any more in the queue.
    Queue retention is set to 25 hours. So messages deleted from queue much more fast.
    The main question is - what does the
    Time between message is in 'PROCESSED' state after dequeue
    and
    time it disappears from queue
    depend on?
    We see different Time on different instances.
    AQ_TM_PROCESSES=10
    We guess that may be it's Queue Monitor that responsible for that?
    Does anybody know what is going on and how to control it?
    Any help is appreciated!
    Thanks in advance!

    Hi maha,
    Yes, queue monitor has responsible for post-process of dequeued messages in queue table.
    In 10gR2, Queue Monitor processes deqeueud messages every 30 seconds.
    If queue retention time are already expired when a queue monitor checks qtable, then a Queue Monitor removes messages from qtable. Otherwise, Queue Monitor update "deq_time" column in qtable. (deq_timestamp column in view is differ from deq_time in qtable.)
    However, I don't know why your messages are removed from qtables even though you set queue retention to 25 hours. And I have no idea to control Queue Monitor cycle, behavior, and so on,

  • TTL of message in queue

    Hi all!
    How can I define message time-to-live in queue? I've got some messages in queue with expiraton date by the year 2038.

    1. I've applied patch 116568-53 on my test system.
    2. I've executed patch-config and install-newconfig. Then imsimta chbuild and imsimta cnbuild have been executed.
    3. start-msg
    4. My directory has been updated from cfgdir_diff.ldif and ugdir_diff.ldif.
    5. imta.cnf contain:
    defaults logging notices 1 2 4 7 copywarnpost ......
    ! tcp_local
    tcp_local smtp mx single_sys remotehost inner switchchannel identnonenumeric subdirs 20 maxjobs 7 pool SMTP_POOL maytlsserver maysaslserver sa
    slswitchchannel tcp_auth missingrecipientpolicy 0
    tcp-daemon
    etc.
    6. After that I've sent message on [email protected]
    7. root@sun/opt/SUNWmsgsr/sbin> ./imsimta cache -dump
    channel : tcp_local
    file name : /opt/SUNWmsgsr/data/queue/tcp_local/011/ZXe0j750N0so7.00
    subdirectory : 11
    enqueue time : 22-Sep-2004 16:43:38.00
    last delivery attempt : 22-Sep-2004 17:12:07.00
    processing priority : 3
    destination system : ddddddd.com
    recipient count : 1
    message size : 1 (kbyte)
    owner : mailsrv
    expiration date : 19-Jan-2038 06:14:07.00
    8. qm.maint> his 1
    Message id: 1
    Filename: /opt/SUNWmsgsr/data/queue/tcp_local/011/ZXe0j750N0so7.00
    Transport layer information:
    Envelope From: address: [email protected]
    Envelope To: addresses: [email protected]
    Message delivery history:
    Wed, 22 Sep 2004 16:43:39 +0400 (MSD)
    TCP active open: Failed connect() Error: Connection refused
    Wed, 22 Sep 2004 16:55:23 +0400 (MSD)
    TCP active open: Failed connect() Error: Connection refused
    What does "expiration date" mean ? Why 2038 year ?

  • Acheving Message Correlation In OSB

    Hi People,
    Just Trying to Implement Message Correlation In OSB.
    Limitations : The DownLine System for us is not expected to send back the JMS Message ID while sending the response message. DownLine system Just sends only the payload. This stands as agreement between us.
    Below is the Scenario.
    I am just trying to replicate the DownLine Flow by using a proxy service and JMS Queues.
    1, Setting a value say "ABCD" to JMS Message ID while routing tthe message to BS from Proxy Service 1.
    2. The business service "IS Response Requred" is enabled and response Queue is configured as XYZ.
    3. Proxy Service 2 Picks Up the message and stubs the response and publishes to JMS Queue Q3.
    4. From JMS Q3 proxy service 3 reads it and sends back to the response Queue (XYZ) configured in the BS.
    5. Also the proxy service 3 sets the JMS Correlation ID as "ABCD" and routes to the response Queue in the BS.
    While sending the messages i can see that the JMS Message ID is getting over writen by a weblogic value, hence correlation is not acheived. Results in time out.

    You are in wrong forum.  Please close the thread and ask the question in SOA Suite forum.
    https://forums.oracle.com/community/developer/english/fusion_middleware/soa_%26_process_management/soa_suite_3/content?filterID=contentstatus[published]~objecttype~objecttype[thread]

  • Issue while posting message to queue

    Hi ,
    I am getting following exception while posting message into queue.For every new build I am getting this exception and after 2 or 3 times of restart of corresponding OBPM related weblogic server,Issue is getting resolved
    A component failed while executing activity '/COM/OU/UserlProcess#Default-3.0/ComponentExecution[PreProcessor]' (BP-method preProcessor) over instance '/COM/OU/UserlProcess#Default-3.0/15141/0'.
    Details:
    The task could not be successfully executed.
    Reason: 'fuego.connector.ConnectorException: Connector [MAIN_Q:null:JMS] caused an exception when getting a resource of type [7].
    Detail:Connector [MAIN_Q:null:JMS] caused an exception when getting a resource of type [7].
    Caused by: Connector [MAIN_Q:null:JMS] caused an exception when getting a resource of type [7].
    Detail:Connector [MAIN_Q:null:JMS] caused an exception when getting a resource of type [7].
    Caused by: Connector [MAIN_Q:null:JMS] returned the wrong class [com.tibco.tibjms.naming.TibjmsConnectionFactoryAttributes] for a resource of type [2].
    Detail:Connector [MAIN_Q:null:JMS] returned the wrong class [com.tibco.tibjms.naming.TibjmsConnectionFactoryAttributes] for a resource of type [2].
    fuego.lang.ComponentExecutionException: The task could not be successfully executed.
    Reason: 'fuego.connector.ConnectorException: Connector [MAIN_Q:null:JMS] caused an exception when getting a resource of type [7].
    Detail:Connector [MAIN_Q:null:JMS] caused an exception when getting a resource of type [7].
         at fuego.server.execution.EngineExecutionContext.invokeMethodAsCil(EngineExecutionContext.java:1091)
         at fuego.server.execution.EngineExecutionContext.runCil(EngineExecutionContext.java:1277)
         at fuego.server.execution.microactivity.ComponentExecutionMicroActivity.runCil(ComponentExecutionMicroActivity.java:126)
         at fuego.server.execution.microactivity.ComponentExecutionMicroActivity.execute(ComponentExecutionMicroActivity.java:84)
         at fuego.server.execution.microactivity.MicroActivityEngineExecutionHandler.executeActivity(MicroActivityEngineExecutionHandler.java:57)
         at fuego.server.execution.ImmediateActivity.execute(ImmediateActivity.java:42)
         at fuego.server.execution.DefaultEngineExecution$AtomicExecutionTA.runTransaction(DefaultEngineExecution.java:304)
         at fuego.transaction.TransactionAction.startNestedTransaction(TransactionAction.java:527)
         at fuego.transaction.TransactionAction.startTransaction(TransactionAction.java:548)
    at fuego.transaction.TransactionAction.start(TransactionAction.java:212)
         at fuego.server.execution.DefaultEngineExecution.executeImmediate(DefaultEngineExecution.java:123)
         at fuego.server.execution.DefaultEngineExecution.executeAutomaticWork(DefaultEngineExecution.java:62)
         at fuego.server.execution.EngineExecution.executeAutomaticWork(EngineExecution.java:42)
         at fuego.server.execution.ToDoItem.executeAutomaticWork(ToDoItem.java:251)
         at fuego.ejbengine.ItemExecutionBean$1.execute(ItemExecutionBean.java:217)
         at fuego.server.execution.DefaultEngineExecution$AtomicExecutionTA.runTransaction(DefaultEngineExecution.java:304)
         at fuego.transaction.TransactionAction.startBaseTransaction(TransactionAction.java:470)
         at fuego.transaction.TransactionAction.startTransaction(TransactionAction.java:551)
         at fuego.transaction.TransactionAction.start(TransactionAction.java:212)
         at fuego.server.execution.DefaultEngineExecution.executeImmediate(DefaultEngineExecution.java:123)
         at fuego.server.execution.EngineExecution.executeImmediate(EngineExecution.java:66)
         at fuego.ejbengine.ItemExecutionBean.processMessage(ItemExecutionBean.java:203)
         at fuego.ejbengine.ItemExecutionBean.onMessage(ItemExecutionBean.java:115)
         at weblogic.ejb.container.internal.MDListener.execute(MDListener.java:466)
         at weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:371)
         at weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:327)
         at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4123)
         at weblogic.jms.client.JMSSession.execute(JMSSession.java:4013)
         at weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:4541)
         at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:464)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)
    Caused by: fuego.connector.ConnectorException: Connector [MAIN_Q:null:JMS] caused an exception when getting a resource of type [7].
    Detail:Connector [MAIN_Q:null:JMS] caused an exception when getting a resource of type [7].
    at fuego.connector.ConnectorException.exceptionOnGetResource(ConnectorException.java:95)
         at fuego.connector.ConnectorTransaction.getResource(ConnectorTransaction.java:324)
         at fuego.connector.ConnectorTransaction.getResource(ConnectorTransaction.java:298)
         at fuego.connector.JMSHelper.getSession(JMSHelper.java:75)
         at fuegoblock.msg.DynamicJMS.sendMessage(DynamicJMS.java:145)
         at xobject.Utility.JMSService.writeToAppQueue(JMSService.xcdl:11)
         at xobject.Utility.Notification.sendAuditNotification(Notification.xcdl:19)
         at XXX.ManualProcess.Default_3_0.Instance.CIL_preProcessor(Instance.xcdl:20)
         at XXX.ManualProcess.Default_3_0.Instance.CIL_preProcessor(Instance.xcdl)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at fuego.server.execution.EngineExecutionContext.invokeMethodAsCil(EngineExecutionContext.java:1082)
         ... 31 more
    Please help how can I resolve this issue
    Thanks
    Sailendra

    I am also getting the same issue. Sailendra, did you resolve the issue?
    If not could anyone help us to resolve this issue.
    I am using Tibco JMS for queue and I have set 'ConnectionFactory' as Connection Factory Lookup Name value in the external resourse.
    Thanks in advance.
    Regards,
    Ramanan

  • NOT PRINTING FROM WINDOWS 7 TO MY PHOTOSMART c7180 ALL-IN-ONE (I CAN SEE MESSAGES IN QUEUE)?

    CANNOT PRINTING FROM WINDOWS 7 TO MY PHOTOSMART c7180 ALL-IN-ONE (I CAN SEE MESSAGES IN QUEUE)?

    Hi,
    I think you need to remove the queue. Please try:
        hold down the Windows key and press R.
        from the Run window, type services.msc and hit enter.
        if the machine asks for Admin you have to accept this,
        look down to the print spooler service, right click it and select properties
        click on the Stop button,
        browse to C:\Windows\System32\Spool\printers
        delete the job inside this folder
        reboot the machine
    Regards.
    BH
    **Click the KUDOS thumb up on the left to say 'Thanks'**
    Make it easier for other people to find solutions by marking a Reply 'Accept as Solution' if it solves your problem.

  • Configure Monitoring of a MSMQ private queue Messages in Queue counter

    Hi
    I have a workgroup server that is not part of my local domain.
    I have contented the server to my local SCOM 2012 R2 server and it is working fine.
    My SCOM server has MSMQ 6.0 & 6.3  MP's installed.
    On the remote servers I have some MSMQ 6.0 private queues.
    When I am trying to monitor one counter in 1 queue , when the threshold is reached I am getting error message on al the queues.
    On the performance counter tab I have :
    Object: MSMQ Queue
    Counter : Messages In Queue
    Instance :[server name'\private$\error
    There were 1207 messages in this queue .
    I Got about 30 messages and error on all queues.
    What did I do wrong ?
    Itamar
    Itamar

    Hi
    This is the alert email I got :
    Alert: Notification Queue
    Source: maasw1\private$\maas.backend.scheduler.timeoutsdispatcher
    Path: MAASW1.xxx.com
    Last modified by: System
    Last modified time: 2/18/2014 2:45:49 PM Alert description: Instance Computer Queues
    Object MSMQ Queue
    Counter Messages in Queue
    Has a value 19
    At time 2014-02-18T14:45:35.0000000+02:00
    I did not place a monitor on this queue but on 2 other queues.
    one with threshold of 500 and on with 1 .
    I have made some change in the monitor and will test it now.
    Thanks
    Itamar 
    Itamar

  • Get information about Subscribed Consumer and messages in queue

    Hi,
    I use a library that allow to set a set of consumers. They read messages I send. I check if the consumers are subscribed through "Open Message Queue Administration Console". Through Broker->Destinations I found the consumer under the correct destination I find the consumers with the message in queue, state and other information. I would like to obtain these information programmatically.
    Could someone link me an example?
    Thanks, bye bye.

    Hi,
    I'm reading the page but I cannot find the jar file that contains this package:
    import com.sun.messaging.jms.management.server
    and the classes:
    -MQObjectName
    -DestinationAttributes
    -DestinationType
    What is the jar file for the class above?
    Moreover, I cannot find the class:com/sun/messaging/jmq/management/JMXMQAddress
    when I try to use the code I wrote I receive this error:
    >
    java.lang.NoClassDefFoundError: com/sun/messaging/jmq/management/JMXMQAddress
         at com.sun.messaging.AdminConnectionFactory.getJMXServiceURL(AdminConnectionFactory.java:257)
         at com.sun.messaging.AdminConnectionFactory.createConnection(AdminConnectionFactory.java:207)
         at testcase.eventManager.DPCTRMSEVENTMANAGER.message(DPCTRMSEVENTMANAGER.java:123)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
         at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
         at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
         at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
         at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
         at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
         at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
         at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
         at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
         at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
         at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
         at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
         at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
         at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
         at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
         at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
    Caused by: java.lang.ClassNotFoundException: com.sun.messaging.jmq.management.JMXMQAddress
         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
         ... 23 more
    Where can I found this class?
    Thanks, bye bye.
    Edited by: PiotreUgrumov on May 13, 2010 8:29 AM

  • Net.Msmq Binding Not Picking Up Messages in Queue as soon as the application pool gets recycled

    Hi,
    We are trying to implement a wcf service that exposes a net.msmq endpoint.  We are running windows server 2008 R2/IIS 7.5 running on a DOMAIN mode.
    1. Our service is called service.svc and it is deployed under an application called Test in the default website (application pool running under network service)
    2. The url to reach the service webpage is http://machinename/Test/service.svc.
    3. We created a private queue called Test/service.svc and we configured permissions for network service to full control.
    Now, when the application pool is "alive" the service picks up the messages correctly, but as soon as the application pool gets recycled (because of timeout or any other reason), the service stops picking up the messages, that just sit in the queue until the service starts again by browsing to the service webpage (http://machinename/Test/service.svc)
    I know this is a popular question, but I already tried several solutions with no luck (for example, we triedhttp://keithelder.net/blog/archive/2009/06/03/fix-for-wcf-netmsmqbinding-not-picking-up-messages-in-queue.aspx,http://www.codewrecks.com/blog/index.php/2009/03/17/hosting-a-wcf-service-based-on-msmq-in-iis7/,http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/a1df55c4-e642-442a-9057-f0aec278d10c/ and other ones)
    Any Help?
    If this post is helpful, please mark it as such
    Alessandro Cardoso
    MVP | Microsoft Heroes | MCT
    blog: http://itaustralia.spaces.live.com
    http://cardosoalessandro.spaces.live.com

    Hi Steven,
    I am Alessandro's colleague, I am working with him on these net.msmq issues. 
    Our configuration includes a transactional queue called Test/Service.svc (unauthenticated,
    we shut down all security for the moment...does it matter?) and these attributes on the service:
    [ServiceContract]
    public interface IService
    [OperationContract(IsOneWay=true)]
    void ProcessMyMessage(MyClass parameter);
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, TransactionIsolationLevel = IsolationLevel.Serializable, TransactionTimeout = "00:03:00")]
    public class Service: IService
    [OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
    public void ProcessMyMessage(MyClass parameter)
    //Do some stuff here
    The service is hosted on IIS 7.5 under an application called Test (so that the full http address of the service is http://machine/Test/Service.svc).
    In the configuration (for both client and service) we specified None for the security mode, "true" value in durable and exactlyOnce
    The Net.msmq Listener Adapter windows service is running fine under the Network Service account (the same as our application pool)
    Is there something we are missing?
    Also, can you explain how a transaction not configured properly can create this behaviour? In my understanding the process of delivering a message happens in 3 steps (I remember a nice picture of this the Juval Lowy book):
    1) Transaction 1: client delivers message to local instance of msmq. The transaction rolls back if the message does not get delivered.
    2) Transaction 2: the local instance of msmq delivers the message to the remote (service) instance of msmq. The transaction rolls back if the message does not get delivered.
    3) Transaction 3: wcf activates my service which picks up the message and process it. The transaction rolls back if the service fails to pick up the message or does not complete the transaction (for example, because of an unhandled exception).
    The message gets delivered to the service machine successfully, so I am assuming that steps 1 and 2 are executed correctly. If my service was not configured to handle transaction properly, wcf should still activate it and do something with it. Or at least,
    if it doesn't get activated at all, this should be the case even when the application pool is well alive and awake, because it should be a configuration problem. Instead, the service works great if the appPool is alive and it never gets activated when the
    appPool is sleeping (absolute nothing in the .svclog trace file generated by the service). Am I saying something wrong?

  • JMS adapter transaction. Rollback message to queue.

    Hi all !
    A have question about jms adapter transaction. My composite application has 3 steps : JMS adapter (listener), mediator, WS adapter. JMS adapter listen queue push message to mediator, mediator invoke web service. If ws not available (server down), mediator try recovery 5 times. After 5 times, reject message from queue. I wont rollback message to queue. I saw examples with JMS + BPEL, but it not help me. Anybody can help me.

    Hi,
    You don’t need to catch a mediator fault – you can let it rollback to the JMS Queue and let the Queue do the retries.
    To get the retries working, log in to the weblogic console and navigate to JMS Modules -> Your Module -> Your Queue -> Configuration -> Delivery Failure
    Here you will find options for Redelivery Limit. Set this to the number of retries you need.
    Then navigate to the connection factory you want and set the redelivery delay.
    This should get your desired behaviour, but once the message has failed it will be discarded. If you prefer to put it on an error queue you can create an error queue, and in the original queue’s, goto Delivery Failure, change the expireation policy and set the Error Destination to be your error queue.
    Hope that helps!
    Robert

  • How to send message to Queue using JMS

    Hai Friends,
    I have written one program, which sends one seriablizable object to the queue. At
    queuesender.send(objectmessage) statement
    i am getting the following exception, but message is going to queue. The next statement is not executing. Next statements is simple debug statement.
    i.e.,System.out.println("Message has been send");
    why this is not working let me know plzz
    HERE is EXception
    <May 15, 2006 11:02:46 AM IST> <Alert> <JMS> <BEA-040049> <JMSServer "cgJMSServer" store failure occurred while writing message for queue ACMQueue, java.io.IOException: JMS JDBC store, connection pool = <cgJMSPool-nonXA>, prefix = <weblogic>: flush failed
    java.io.IOException: JMS JDBC store, connection pool = <cgJMSPool-nonXA>, prefix = <weblogic>: SQL exception
    java.sql.SQLException: Connection failure. sendMethodRequest(...).

    Hai Friends,
    Previously i didn't give full stack trace. now i am sending the exact stack trace and little bit code. Plz help me
    CaseQuerySearchResult cqsr = new CaseQuerySearchResult();
    ObjectMessage obj = qsession.createObjectMessage();
    while(rs.next())
         // I am getting 10 fields from DB and setting those values like the following,
         cqsr.children.setLoan(rs.getString(1));
    obj.setObject(cqsr);
    qconnection.start();
    System.out.println("----B4 qsender----");
    qsender.send(obj);
    System.out.println("----After qsender----");
    <May 15, 2006 12:05:47 PM IST> <Alert> <JMS> <BEA-040095> <JMSServer "cgJMSServer". Store I/O failure, java.io.IOException: JMS JDBC store, connection pool = <cgJMSPool-nonXA>, prefix = <weblogic>: ping failed, database not responding
    java.io.IOException: JMS JDBC store, connection pool = <cgJMSPool-nonXA>, prefix = <weblogic>: SQL exception
    java.sql.SQLException: Connection failure. sendMethodRequestNoFlush(...).
    at com.pointbase.dbexcp.dbexcpException.getSQLException(Unknown Source)
    at com.pointbase.net.netJDBCPrimitives.sendMethodRequestPrivate(Unknown Source)
    at com.pointbase.net.netJDBCPrimitives.sendMethodRequestByID(Unknown Source)
    at com.pointbase.net.netJDBCConnection.setAutoCommit(Unknown Source)
    at weblogic.jdbc.wrapper.PoolConnection.setAutoCommit(PoolConnection.java:141)
    at weblogic.jms.store.JDBCIOStream.opendb(JDBCIOStream.java:2205)
    at weblogic.jms.store.JDBCIOStream.ping(JDBCIOStream.java:1286)
    at weblogic.jms.store.StoreRequest.doTheIO(StoreRequest.java:355)
    at weblogic.jms.store.JMSStore.execute(JMSStore.java:493)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
    at weblogic.jms.store.JDBCIOStream.throwIOException(JDBCIOStream.java:498)
    at weblogic.jms.store.JDBCIOStream.opendb(JDBCIOStream.java:2287)
    at weblogic.jms.store.JDBCIOStream.ping(JDBCIOStream.java:1286)
    at weblogic.jms.store.StoreRequest.doTheIO(StoreRequest.java:355)
    at weblogic.jms.store.JMSStore.execute(JMSStore.java:493)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
    java.io.IOException: JMS JDBC store, connection pool = <cgJMSPool-nonXA>, prefix = <weblogic>: ping failed, database not responding
    java.io.IOException: JMS JDBC store, connection pool = <cgJMSPool-nonXA>, prefix = <weblogic>: SQL exception
    java.sql.SQLException: Connection failure. sendMethodRequestNoFlush(...).
    at com.pointbase.dbexcp.dbexcpException.getSQLException(Unknown Source)
    at com.pointbase.net.netJDBCPrimitives.sendMethodRequestPrivate(Unknown Source)
    at com.pointbase.net.netJDBCPrimitives.sendMethodRequestByID(Unknown Source)
    at com.pointbase.net.netJDBCConnection.setAutoCommit(Unknown Source)
    at weblogic.jdbc.wrapper.PoolConnection.setAutoCommit(PoolConnection.java:141)
    at weblogic.jms.store.JDBCIOStream.opendb(JDBCIOStream.java:2205)
    at weblogic.jms.store.JDBCIOStream.ping(JDBCIOStream.java:1286)
    at weblogic.jms.store.StoreRequest.doTheIO(StoreRequest.java:355)
    at weblogic.jms.store.JMSStore.execute(JMSStore.java:493)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
    at weblogic.jms.store.JDBCIOStream.throwIOException(JDBCIOStream.java:498)
    at weblogic.jms.store.JDBCIOStream.opendb(JDBCIOStream.java:2287)
    at weblogic.jms.store.JDBCIOStream.ping(JDBCIOStream.java:1286)
    at weblogic.jms.store.StoreRequest.doTheIO(StoreRequest.java:355)
    at weblogic.jms.store.JMSStore.execute(JMSStore.java:493)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
    at weblogic.jms.store.JDBCIOStream.throwIOException(JDBCIOStream.java:498)
    at weblogic.jms.store.JDBCIOStream.ping(JDBCIOStream.java:1318)
    at weblogic.jms.store.StoreRequest.doTheIO(StoreRequest.java:355)
    at weblogic.jms.store.JMSStore.execute(JMSStore.java:493)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)

  • Code to Retrieve the message from Queue in Oracle BPEL

    Actually I am placing the Message into JMS Queue using JMS Adapter.After Placing the message,I need to retrieve the placed message from same queue.
    Right now I am using the Receive Activity and the JMS Adapter to retrieve the message from Queue.But my receive activity is always in the waiting state itself and I am not able to retrieve the message from queue.What might be the issue????
    Can anybody give me a better suggestion so that I can go ahead??
    Thanks in advance for your help.

    Hi Raja,
    Is the process a empty bpel process which is used to get the message from the MQ?
    Regards
    Surya

Maybe you are looking for

  • MOVING GUIDES EXACTLY IN INDESIGN CS5.5

    Hello. I'm looking to move some guidelines ('guides') by an exact amount in InDesign CS5.5. Is there a dialogue box for this or another way of moving a guide by an exact amount? I will be grateful for any replies which can assist me with this problem

  • New Business Area

    Hi, What are the SD side configuration needed if we create a new business area. At present we are having 3 business area  defined by rule  plat and Item division. Is it necessary to create a new sales organization for the newly defined  business area

  • "No content" for Blinkfeed Gallery

    Just got my HTC One  I'm running KK with the latest Sense 5.5, stock.  I love the phone and I'm getting used to using BlinkFeed and like it alot.  However, the one thing that has never worked is the Gallery in the Blinkfeed.  I have photos on my phon

  • Downloaded iTunes 11, now the store won't load

    I've tried doing system updates and re-downloading the program several times. My music and everything else outside the store works, but when I try to open the iTunes Store, the progress bar goes about halfway and then turns back into the Apple and le

  • Removing white border when publishing in web

    Hi There seems to be a default white border around the web published version of my CAL metarial. See below http://www.lshtm.ac.uk/dl/programme/sample/whitegap.gif How do I remove it so the CAL material is flush against the corner edge of the web brow