Geeting reply message on transacted queue.

Hi all,
I need to use a transacted queue. I have to get some information back from my message.
I know by defination, we can't use QueueRequestor class. Is there any way, by which I can get reply (a new Message) in a transacted queue???
I feel, JMS is not developed for these kind of problems. Am I wrong here???
thanks
amarnag

Hi all,
I need to use a transacted queue. I have to get some
information back from my message.
I know by defination, we can't use QueueRequestor
class. Is there any way, by which I can get reply (a
new Message) in a transacted queue???What's the problem? The QueueRequestor is not rocket science. Just write your own request/reply handler which commits after send.

Similar Messages

  • MDB is not picking up messages in the Queue

    Hi ,
    I am trying to implement a MDB (Producer) , that acts as a Message Producer also . This MDB pickes up a message from a Queue and sends it to another Queue(Queue 2) after some processing. The MDB listening to the Queue 2 is not being able to pick this message.
    The Weblogic console shows that the message is pending.
    The transaction-type is Container and transaction-attribute is 'Required' for the Producer (MDB) ...
    I am creating a QueueSession as con.createQueueSession(true, Session.AUTO_ACKNOWLEDGE) . I also tried specifying queuesession.commit() ...
    even then the Message is not picked by the MDB listening on the other side...
    Please help me out

    any one

  • How to define a transaction queue in xmlgateway setup?

    Hi folks:
    I have made a sample in XMLgateway successfully. But that is using the OTA way, which I send the request use the Oracle Transport Agent with this link:http://[hostname]:[port]/webservices/ECXOTAInbound, and I can see the status in Transaction Monitor is successful. And From Oracle DB, I can see the message is enqueued the ecx_inqueue table(Inbound Message Queue) first, and then the workflow BES enqueues the message to the ecx_in_oag_q_table(inbound transaction queue) for XML gateway to process.
    And my question is: When I try to send the message rather by axis client than by the link http://[hostname]:[port]/webservices/ECXOTAInbound, there is no record for this message in Transaction Monitor. And from Oracle DB, I can see the message is enqueued the wf_ws_jms_in table(Inbound Message Queue) first, and then the message is not enqueued into ecx_in_oag_q_table(Inbound transaction queue). But a error message is insert into ecx_inbound_logs.
    So,What I want to ask for help are following:
    1.How can I define the transaction queue for trading partner's transaction?
    2.Is there another inbound transaction queue I can use for wf_ws_jms_in(Inbound Message Queue)?
    3.Is this transaction queue(ecx_in_oag_q_table) only receive the message from ecx_inqueue table(Inbound Message Queue)? If yes, what's the transaction queue receive the message from wf_ws_jms_in table(Inbound Message Queue), and How can I assign this transaction queue to my JMS and web service request trading partner?
    I really appreciate if anyone can help me to make such thing clear. Thanks very much.I'm always waitting...

    i have  a program in production system if i type the request and execute its sends a mail to my admin saying to transport the request to production system.....thats y??????
    just tell me ur idea.............

  • Message sitting in Queues for 30 minutes before MDB picks them up

    We're seeing a situation where we place messages on a queue and a small percentage of them will sit on the queue for 30 minutes before being picked up by the MDB to process. Anyone see this before?
              Here is the background. We're running 3 distributed queues on a cluster of 4 Weblogic 8.1 sp3 servers. The 30 minute issue happens on all 3 queues on all 4 servers. Currently we do not see a pattern. It can happen at a busy hour and in the middle of the night with nothing going on. During a busy timeframe, we can get up to 50 msg that hangup over a few minutes; less than 5 minutes.
              Our Service is an enterprise email service where various clients send email request to us via EJB. The EJB puts an entry into the database and puts a request msg into the queue. The MDB pulls it off the queue sends it to an email subsystem and updates the database.
              We added log msgs in both the EJB and MDB to track messages and narrowed it down to the requests just sitting in the JMS queue. We DO NOT set a delivery time via setJMSDeliveryTime().
              As mentioned is happens anytime during the day (busy or idle), may go for days without occuring, on any of the 3 JMS queues, on any of the 4 cluster servers, and for any of the clients. It's consistantly 30 minutes. This occurs on a small number of requests, but is enough to concern our business owner.
              Any thoughts on possible problems or any thoughts on monitoring or tracking down the issue is greatly appreciated.
              Thanks. Later...
              - Wayne

    One possibility is that the messages have already been pushed to an MDB instance in the JMS asynchronous consumer pipeline, but the MDB instance has stalled during message processing - which delays processing of the following messages. The waiting messages count as "pending" in the JMS statistics.
              You can reduce the number of messages in a JMS asynchronous consumer's pipeline via the "MessagesMaximum" connection factory setting (default is 10). First: create a custom connection factory with transactions enabled (to support transactional MDBs), and ack-mode set to "previous" (to support pub/sub MDBs), and MessagesMaximum set to its lowest possible value. Second: specify this connection factory's JNDI name in the MDB's weblogic descriptor.
              Tom, BEA

  • Cannot receive message on temporary queue

    I am executing the following code in a web application.
              It is sending a message to a JMS queue. The MDB
              listening to that queue processes the message
              and posts a reply to the temporary queue specified in
              the JMS Reply to field. The queue browser code below
              shows that the message is in the queue, but the receive
              times out and returns null. My question is why can't the
              receiver get the message?
              Am I missing something?
              Thanks in advance,
              -Doug.
              =====WEBAPP SIDE===========
              QueueConnection connection = null;
              QueueSession session = null;
              QueueSender sender = null;
              QueueReceiver receiver = null;
              Queue respQueue = null;
              try
              connection = QUEUE_CON_FACTORY.createQueueConnection();
              connection.start();
              session = connection.createQueueSession(false, Session.CLIENT_ACKNOWLEDGE);
              TextMessage textMessage = session.createTextMessage();
              textMessage.setText(xmlInput);
              if (wait)
              respQueue = session.createTemporaryQueue();
              textMessage.setJMSReplyTo(respQueue);
              receiver = session.createReceiver(respQueue);
              sender = session.createSender(INPUT_QUEUE);
              sender.send(textMessage);
              if (wait)
              QueueBrowser qB = session.createBrowser(respQueue);
              Enumeration enum = qB.getEnumeration();
              while (enum.hasMoreElements())
              Message msg = (Message) enum.nextElement();
              LOG.debug("msg = " + msg);
              return ((TextMessage) receiver.receive(10000)).getText();
              return DEFAULT_RESPONSE;
              =======MDB side============
              QueueConnection queueConnection = QUEUE_CON_FACTORY.createQueueConnection();
              queueConnection.start();
              QueueSession queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
              TextMessage textMsg = queueSession.createTextMessage();
              textMsg.setText(buffer.toString());
              QueueSender queueSender = queueSession.createSender((Queue)getReplyDestination());
              queueSender.send(textMsg);
              queueSender.close();
              QueueBrowser qB = queueSession.createBrowser((Queue)bpelCtx.getReplyDestination());
              Enumeration enum = qB.getEnumeration();
              while (enum.hasMoreElements())
              Message msg = (Message) enum.nextElement();
              LOG.debug("msg = " + msg);
              queueSession.close();
              queueConnection.close();
              ==== LOG ====
              [DEBUG] 2006-01-16 14:51:17,780 MDB - msg = TextMessage[ID:N<192225.1137444677780.0>, <unique-id-response xmlns
              ="htt...]
              [DEBUG] 2006-01-16 14:51:27,374 WEBAPP -
              msg = TextMessage[ID:N<192225.1137444677780.0>, <unique-id-response xmlns="htt..
              .]

    At first glance, this looks like a standard design to me. Does the same problem occur when there are no browsers?
              Tom
              (Performance note: It is quite CPU-intensive to continually create and close connections/temporary destinations/sessions/consumers/producers. Cache and/or pool them for re-use when possible. Use a cached anonymous producer on the MDB for sending replies [pass null for the dest when creating it, and specify the dest as a send parameter].)

  • 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.

  • JMS event generator only gets non-transactional queue msg

    Hi,
    I have created a JMS event generator to listen to a particular queue. It seems to work perfectly fine if, when posting a message to the queue that the JMS EG is listening to, the queue created is a non-transactional queue, i.e. queueConnection.createQueueSession(false, ...).
    However if I created a transactional queue to post message to the JMS EG, i.e. queueConnection.createQueueSession(true, ...), then the JMS EG can't seem to see the message. I checked in the WLI Admin console, JMS EG section, and there are no messages read by the particular JMS EG after I have posted the msg to the queue.
    My question is: is there a known limitation on the JMS EG that it can only read from a non-transactional JMS queue, or is this a bug? (I am using weblogic 8.1 sp2).
    Thanks
    Regards,
    xlfhk

    Hi,
    sorry, just discovered it's my mistake. Instead of using the transaction created when calling queueConnection.createQueueSession(true, ...), and committing that, I created a JTA transaction artificially wrapping the entire chunk of code.
    As a result, I ended up with a pair of transactions that are nested (I think ...), and the external transaction's commit was called when the nested JMS transaction hasn't been committed yet. As a result, no commit ever took place (I think again ...).
    I have now tried calling queueSession.commit() after sending the message. It seems to work fine. Thanks for the help.
    Regards,
    xlfhk.

  • Push different type of messages to JMS Queue using JMS Adapter

    Platform: Oracle SOA 11g. JMS Adapter.
    I got to push different types of messages as string to same queue. JMS Adapter requires schema to push a message to a queue. Since messages are of different types, how can I push them into queue. I tried to use singleString schema. Result is that actual message gets wrapped into <singleString> root element which is not the required result.
    Any hints or links shall be appreciated.

    Thanks fo ryour reply and help. I appreciate that.
    Wrapping of original message in <singleString>  element is done by JMS Adapter as the very last activity/setting. I am not composing/transforming message into final shape with singleString through transformation.
    Once message is with JMS adapted on one end, it is in Queue on the other end. No control.
    Since consuming end is not in my control and requires the actual message in Text format, I need to have the message target queue in Text format.
    If I select the Opaque schema, following error message is thrown.
    <bpelFault><faultType>0</faultType><mismatchedAssignmentFailure xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"><part name="summary"><summary>Mismatch Assign. cannot set a nonmessage value to a message-based variable. An attempt to assign a nonmessage value to a message-based variable failed. Verify the BPEL source for invalid assign activities.< /summary></part></mismatchedAssignmentFailure></bpelFault>

  • Posting a message to JMS queue using B2B

    Hi,
    Could anyone suggest a solution for this scenario?
    I have two trading partners say TP1 & TP2. Suppose TP1 is sending an xml message to TP2 using custom ebMS protocol, then at TP2, the message should be posted to a JMS Queue so that some other application can read it and process it.
    The problem which I am facing is..
    1) where to create that JMS Queue(I could not find any options for creating a JMS Queue neither in B2B console nor in enterprise manager console..!!)?
    2) how to register TP2 to send msg to that JMS Queue(How that queue will be vissible to B2B)?
    3) Should the endpoint be given as that JMS Queue while configuring the Delivery Channel for TP2?
    Thanx in advance for your suggestions,
    Regards,
    Satya.

    Hi Narayanan,
    Thank you for your prompt reply. I understand that we need to create an external delivery channel to post the message to a JMS Queue from TP2. Currently I am using default AQ's (b2b.IP_IN_QUEUE & b2b.IP_OUT_QUEUE) at TP2 end to receive the message.
    But, I want to post the message to JMS Queue. For this I need to create an external delivery channel and the corresponding end point should be the name of that JMS Queue. Is my assumption correct?
    I have already gone through the thread that you have mentioned and the pdf as well. But, I am not able to find an option on how & where to create that JMS Queue?
    Could you clarify on this?
    Regards,
    Satya.

  • Request-Reply Messaging

              Hi,
              I'm buffled because I try to implement
              Request-Reply Messaging in my JavaClient Application,
              but one time it works, the next one doesn't.
              I use in my Application an MessageListener,
              and the same queue to send my messages and to receive reply messages.
              Middleware: WL 6.0 sp2
              Any advise would be great!
              kind regards
              

    Hi John,
    Does the work have to be queued? If not then I think the Functor Pattern (if you need order guarantees) or the Processing Pattern (no order guarantees) might be your easiest solutions (and they're fast).
    Alternatively, we could look at adding request/response into the Messaging. Do you have a particular API you'd like to see? Something JMS-ish?
    Regards
    -- Brian

  • Transport rule exchange 2010 not sending reply gets stuck in Queue

    I am trying to set up a transport rule in exchange 2010 that will auto reply to a email address that is no longer valid. One of our exec passed away and they want a reply setup to send an automatic message. I read somewhere that the auto reply may not be
    the right way to go about this so I was trying to setup a transport rule. I used the wizard to make the rule for conditions 1 all outside email addresses 2 sent to the internal email address specified. Actions 3 Send rejections message to sender with enhanced
    status code
    Created the message in the rule and gave it a status code 5.7.228 no exceptions and created the rule
    Went to an outside email account and sent to the internal users account. It was reported that it was delivered from our mail filter I verified that it did not get delivered to the user then a few min later the reply appears in the queue viewer on exchange
    a few min later it is gone I figured it worked but when I checked it did not get delivered to the outside email address or seen going through the mail filter. I'm missing something I know its right there somewhere just looking to long and I cant see it.
    This is baffling me as to what happened? What account is it sent from? The user, administrator or do I need to create a postmaster account for it to work? I am a one man shop and it get kind of baffling some times
    Thanks in advance for any help I will keep looking for the answer
    John R
    John R

    Hi John,
    From your description, I would like to verify the following things for troubleshooting:
    1. Please verify if users can send messages to external email addresses.
    2. Please check if internal users can receive the rejection messages.
    Best regards,
    Amy Wang
    TechNet Community Support
    Yes users can send to external address and internal users receive NDR rejection messages
    The system has been in production for 2 years. I'm just trying to find the best way to setup a auto reply for users that are no longer with us or have moved on.
    Thanks for your help
    John R

  • 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

  • Warning message in Transaction VF31

    Hi,
    I want a warning message in transaction VF31 and my system is ECC 5.0.
    I couldnt locate any billing exit.
    Is it possible to throw a warning message in this case?

    Hi Ronaldo
    I do agree that it is a standard  program and that is why Copying of  standard  program to Z program and assignment of that Z program will be correctly done my the Technical consultants . So its better to take help of the technical consultants So that we wont face any problem when we run VF31 again after changing the program
    Regards
    Srinath

  • How do i find the number of messages in a queue

    Sorry if this is too trivial, but i haven't been able to figure out how to determine the number of messages in a queue. business case being that i can only have 3 messages in the send queue, so i need to stop sending if there are 3 outstanding messages still in the send queue.
    Can someone point the way?
    Thanks,
    Nilesh

    Hi,
    To get the depth using JMS you must create a QueueBrowse and browse the entire queue. Its generally horribly inefficient if you want to do it with any regularity.
    In Hermes I have had to write plugins that open separate connections to providers using their non-JMS APIs or JMX and get that kind of information that way.
    Look at the getDepth() method in this JBoss plugin for an example that uses JMX:
    http://cvs.sourceforge.net/viewcvs.py/hermesjms/Hermes4/src/java/hermes/ext/jbossmq/JBossMQAdmin.java?view=markup
    And here is one for WebSphereMQ that uses one of its many APIs..
    http://cvs.sourceforge.net/viewcvs.py/hermesjms/Hermes4/src/java/hermes/ext/mq/MQSeriesAdmin.java?view=markup
    Colin.
    http://hermesjms.com

Maybe you are looking for