MDBs responding via Temporary Queue

Hello,
I've been attempting to get this working in test code, but i seem to be missing something. I want a message producer to send a message to an administered queue, have the message processed by a Message Driven Bean, and have the bean post a response back to a temporary queue that was setup in the original producer. All over the net i find statements that this can be done and is reasonably normal, but i have not found a single code snippet to this effect, nor can i apparently get it to work on my own. I am using JMS with J2EE 1.3 on websphere 5.0.
Within the message producer, i create the temporary queue and pass it in the JMSReplyTo field.
<code>
TemporaryQueue tempq = queueSession.createTemporaryQueue();
message.setText("Temporary Queue Test Message");
message.setJMSReplyTo(tempq);
queueSender.send(message);
</code>
The MDB sees the message and onMessage is called normally. From within the MDB code, i have the temporary queue object (i print out the name of the queue in the message ReplyTo field with toString() to confirm) and i have the MDB context from getMessageDrivenContext() supplied by javax.ejb. Unfortunately, javax.ejb.MessageDrivenContext is not the same or similar to javax.naming.Context.
To send a message, i need the send() method from the QueueSender interface, which is generated from the QueueSession interface, which is generated from the QueueConnection interface, which is generated from a QueueConnectionFactory, and is ultimately reliant upon javax.naming.Context. So, i have the (temporary) queue object, but see no method to put a message on it for consumption by the creator of the temporary queue. (messages on temporary queues can only be consumed by the creator of said queue. if no other producer can use it, too, perhaps i am missing the point on temporary queues)
I can easily get the MDB to fire off messages to other administered queues. How do i get it to respond with a message on a temporary queue?
Could somebody please enlighten me?
thanks,
cam

Thanks Andreas, your answer sent me off on new trails to read, but something is still missing. I hope that you (or anybody else) is able to see what i do not.
Your code was J2EE 1.4 (beta), but Websphere 5.0 still uses J2EE 1.3.1. I was able to translate most of your code back to the older form but some doesn't fit, which may be part of my problem (as shown below).
I have connection factories and queues already setup on the server. they work fine as far as all other non-temporary queue usage is concerned.
Using your code, here's some of the problems i have crossed while trying to sort this out
public void onMessage(Message inMessage)
  Destination dest = (Destination) ctx.lookup("jms/t0");
  MessageProducer producer = session.createProducer(dest);
  producer.send(msg);
}My first question is how are you looking up a temporary (i.e. dynamically created) queue with some hard-coded string ("jms/t0")? I assume that your string was meant to be arbitrary but it must still represent the destination, which is the temporary queue that doesn't have a hardcodable name (AFAIK). I have tried using the name inMessage.getJMSReplyTo().toString(), which in my case gives me "queue://WAS_localhost_server1/AMQ.10000009?persistence=1", but this only throws a NamingException (not found) when trying to do a lookup() on it.
If you already had the Destination object from inMessage.getJMSReplyTo().toString(), why would you bother to go through a String lookup just to get the object again? (for use in the createProducer() call)
To get past the above naming exception, i commented out the Destination getting line and used the object from the getJMSReplyTo() message method. In 1.3.1, the equivalent Producer line looks like:
QueueSender producer = session.createSender(replyTo);which is pretty much like what i already had. Unfortunately, an error is reported that it is unable to open the specified queue. (J2CA0056I: The Connection Manager received a fatal connection error from the Resource Adaptor for resource JMS$MyMDBConnectionFactory$JMSManagedConnection@580144656. The exception which was received is MQJMS2008: failed to open MQ queue)
I double checked to make sure both the creator of the temporary queue and the MDB were both using the same administered Connection Factory. They are. I don't know if it's relevant.
Any further ideas?
Thanks,
cam

Similar Messages

  • MDB replying to temporary queue

    Hi,
    I'm having problems getting an MDB to reply to a temporary queue set by an EJB. It seems to be getting the correct temporary queue, but the EJB that is meant to receive the reply times out, and then gives a null pointer exception, which I assume means no text in the reply message.
    here's the relevant code from both the EJB and MDB:
    EJB:-
    QueueSession queueSession = null;
    QueueSender queueSender = null;
    TemporaryQueue tq = null;
    QueueReceiver queueReceiver = null;
    TextMessage message = null;
    try
    queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    queueSender = queueSession.createSender(queue);
    tq = queueSession.createTemporaryQueue();
    queueReceiver = queueSession.createReceiver(tq);
    message = queueSession.createTextMessage();
    message.setText("Message from EJB to MDB");
    message.setJMSReplyTo(tq);
    System.out.println("Temp queue = " + tq.toString());
    queueSender.send(message);
    Message response = queueReceiver.receive(20000);
                        TextMessage responseText = (TextMessage)response;
    System.out.println("EJB: Message received: " + responseText.getText());
    MDB:-
    public void onMessage(Message inMessage)
    TextMessage msg = null;
    QueueConnection queueConnection = null;
    QueueSession queueSession = null;
    QueueSender queueSender = null;
    TextMessage replyMsg = null;
    try
    if (inMessage instanceof TextMessage)
    msg = (TextMessage) inMessage;
    System.out.println("MESSAGE BEAN: Message received: " + msg.getText());
    queueConnection = queueConnectionFactory.createQueueConnection();
    queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    System.out.println("Temp Queue = " + msg.getJMSReplyTo().toString());
    queueSender = queueSession.createSender((Queue)msg.getJMSReplyTo());
    replyMsg = queueSession.createTextMessage();
    replyMsg.setText("From MDB: Right back at ya");
    System.out.println("Sending Reply Message");
    queueSender.send(replyMsg);
    Any ideas?
    Thanks.

    Yes, I kind of figured there was no message to be found on the temporary reply queue.
    I was wondering why this is, both beans have a toString() method that displays the same queue name, so they're using the same temporary queue, and the MDB definitely replies to the EJB. So I'm still not sure why the EJB doesn't find a message.
    The MDB sends its reply long before the EJB times out on its receive. The only reason I put in the value 20000 ms was that with a blocking receive the EJB would wait indefinitely.
    Still stuck,
    thanks.

  • MDB for Temporary Queues?

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

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

  • How to bind Temporary Queue to Context in FioranoMQ

    I have two JMS clients sending messages to each other via FioranoMQ.
    And one client creates a temporary queue, for example
    Temporary Queue auction1Queue = qSession.createTemporaryQueue();
    My question is how to bind this auction1Queue to Context? so that the client on the side can lookup
    I don't use the usual way of set/getJMSReplyTo() to message because it will change the logic of my program.
    With SonicMQ, I just simply bind it like this
    jndi.bind("auction1", auction1Queue);
    then the other side just need to jndi.lookup("auction1")
    and with ActiveMQ it is even simpler
    Both side just need to lookup for the same name like that
    jndi.lookup("dynamicQueues/auction1");
    http://activemq.apache.org/jndi-support.html
    But FioranoMQ does not support both of the above operations.
    I don't really know how to do the same thing with FioranoMQ.
    Hope that somebody can help me.
    Thank you very much
    Edited by: dannytrinh1 on Apr 16, 2009 5:53 AM

    How to look up for temporary queue by using temporary queue name using JNDI context. I am getting lookup faild error" for temporary queue. While trying to bind this temporary queue name to jndi , it is throwing an exception as: notsupported exception. I am using ActiveMQ 5.2.
    See below sample code...
    tq = session.createTemporaryQueue();
    jndiContext.bind("queue.MyTempQueue",tq);

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

  • Premiere CC 2014 crashes when exporting via the Queue

    Having issues exporting from Premiere CC 2014 via the "Queue". 
    My system:
    Dell Precision T5600 Workstation
    Windows 7 Pro 64 bit
    Xeon E5-2680 @ 2.7 GHz processor
    Nvidia Quadro 4000 graphics card, driver ver 347.25
    32 GB RAM
    Creative Cloud 2014
    Premiere Pro CC (2014) Up to date
    Media Encoder CC (2014) Up to date
    Exporting via the Queue has work just fine in the past.  Had this issue awhile back and cleared some cashed files which fixed the problem but don't remember what I did.   I have uninstalled and re-installed Premiere.  This took care of the problem for awhile, but now the same issue has cropped up again.
    Symptoms: When exporting a sequence from Premiere, clicking "Queue" launches Media Encoder but it doesn't completely hand off the sequence to Media Encoder.  Premiere locks up, leaving a small blank window open named "Export Media (Not Responding)".  It never completes the hand over to the Media Encoder queue.  If I reverse the process by launching Media Encoder and import the same Premiere timeline directly into the Media Encoder queue, it loads and renders just fine.  If I do an "Export" from Premiere, it works just fine.  This seems to indicate something is going on with the exchange between Premiere and Media Encoder.  I have this issues on multiple projects.
    Any help would be greatly appreciated.
    Thanks, Dave

    I'm not clear why you couldn't run it in Administrator mode ... right-click the program icon, Properties -> Compatibility, near the bottom, run in administrator mode ...
    Neil

  • Temporary queue problem

    Hi,
    I cannot create a receiver for the temporary queue. It throws "Invalid Destination"
    exception. I disassembled the session class and the reason is the session class casts the
    temporary query to Query and it throws null pointer exception as the temporary queue does not extend this
    interface. The code I used is written as I had read in Sun's JMS tutorial, why it does not work?
    Context ctx = new InitialContext();
    QueueConnectionFactory factory = (QueueConnectionFactory)ctx.lookup("jms/QueueConnectionFactory");
    QueueConnection connection = factory.createQueueConnection();
    QueueSession session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    Queue tempQueue = session.createTemporaryQueue();
    QueueReceiver receiver = session.createReceiver(reportQueue); <-- this is the place where the exception is thrown
    receiver.setMessageListener(new ReportQueueListener());
    connection.start();
    Exception:
    javax.jms.InvalidDestinationException: Invalid queue
         at com.evermind.server.jms.EvermindQueueSession.createReceiver(EvermindQueueSession.java:145)
         at com.evermind.server.jms.EvermindQueueSession.createReceiver(EvermindQueueSession.java:134)
    Thanks, Zbynek
    P.S. I found similar questions in this forum but no answer ???

    You already have a reference to the Queue from msg.getJMSReplyTo(). There
              should be no need to look it up again.
              I don't think you are supposed to be able to look up a temporary queue in
              this fashion anyway.
              Bob
              "Chuck Kiefriter" <[email protected]> wrote in message
              news:3d209522$[email protected]..
              >
              > I send an object message to a queue with the JMSReplyTo set to a temporay
              queue the
              > client uses to sit and listen for a response. When the MDB tries to do a
              lookup
              > on the temporary queue to send a response, it gives me the following
              error:
              >
              > javax.naming.NameNotFoundException: Unable to resolve
              eDailiesJMSServer.TemporaryQueue56
              > Resolved: '' Unresolved:'eDailiesJMSServer' ; remaining name
              'TemporaryQueue56'
              > <<no stack trace available>>
              >
              > I checked in the WebLogic console while the client was still listening for
              a response
              > and it shows a temporay queue up and running called
              eDailiesJMSServer.TemporaryQueue56
              >
              > Is there something else I should do to resolve the JNDI name? I used the
              following
              > code in the MDB to get the temporary queue name:
              >
              > (Queue)msg.getJMSReplyTo()).getQueueName()
              >
              > Any ideas?
              >
              

  • Problem Using Temporary Queue

              I send an object message to a queue with the JMSReplyTo set to a temporay queue the
              client uses to sit and listen for a response. When the MDB tries to do a lookup
              on the temporary queue to send a response, it gives me the following error:
              javax.naming.NameNotFoundException: Unable to resolve eDailiesJMSServer.TemporaryQueue56
              Resolved: '' Unresolved:'eDailiesJMSServer' ; remaining name 'TemporaryQueue56'
              <<no stack trace available>>
              I checked in the WebLogic console while the client was still listening for a response
              and it shows a temporay queue up and running called eDailiesJMSServer.TemporaryQueue56
              Is there something else I should do to resolve the JNDI name? I used the following
              code in the MDB to get the temporary queue name:
              (Queue)msg.getJMSReplyTo()).getQueueName()
              Any ideas?
              

    You already have a reference to the Queue from msg.getJMSReplyTo(). There
              should be no need to look it up again.
              I don't think you are supposed to be able to look up a temporary queue in
              this fashion anyway.
              Bob
              "Chuck Kiefriter" <[email protected]> wrote in message
              news:3d209522$[email protected]..
              >
              > I send an object message to a queue with the JMSReplyTo set to a temporay
              queue the
              > client uses to sit and listen for a response. When the MDB tries to do a
              lookup
              > on the temporary queue to send a response, it gives me the following
              error:
              >
              > javax.naming.NameNotFoundException: Unable to resolve
              eDailiesJMSServer.TemporaryQueue56
              > Resolved: '' Unresolved:'eDailiesJMSServer' ; remaining name
              'TemporaryQueue56'
              > <<no stack trace available>>
              >
              > I checked in the WebLogic console while the client was still listening for
              a response
              > and it shows a temporay queue up and running called
              eDailiesJMSServer.TemporaryQueue56
              >
              > Is there something else I should do to resolve the JNDI name? I used the
              following
              > code in the MDB to get the temporary queue name:
              >
              > (Queue)msg.getJMSReplyTo()).getQueueName()
              >
              > Any ideas?
              >
              

  • Temporary queue - what am I doing wrong?

    I have two different apps - one server and many clients, both are working with OpenMQ 4.2 on SP1 Vista x86.
    Conception is:
    1. Server has an one permanent queue to whom clients send auth requests.
    2. Each time client prepares authorization request it creates temporary queue, where response from server should arrive - one queue per each client.
    3. Name of this temporary queue is attached to authorization request.
    But it doesn't work =((((((((
    Piece of code on client dedicated to temp queue:
    dataQueue = session.createTemporaryQueue();
    dataQueueName = dataQueue.getQueueName();then DataQueueName is being sent to server as simple String message (something like temporary_destination://queue/***.***.***.***/61253/1 )property where it tries to use this queue:
    // processing received message...
    dataQueue = new com.sun.messaging.Queue(receivedString);But it doesn't work, Connection not created exception occurs.
    What am I doing wrong?
    Thanks to everybody for your future answers.

    thanks for your answer!
    I've tried to work with autocreated queues as you wrote and it works, great =)
    but I have a problem when adopting your example
    Queue tmp = m.getJMSReplyTo();
    there is type mismatch here, tmp is an +com.sun.messaging.Queue+ object, but method +getJMSReplyTo()+ returns +javax.jms.Destination+ =(
    Edited by: GlebHappy on 17.11.2008 0:11                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Problem with temporary queues

    Hi,
              I've setup a template for temporary queues in the weblogic console (8.1SP4). However, I'm getting an exception when trying to destroy the queue after use. This doesn't happen with other JMS providers, so is there something special to Weblogic about temp queues? Is there a specific option that needs to be set in the template?
              Queue: MyJMSServer.TemporaryQueue1390
              weblogic.jms.common.JMSException: Destination is in use
              at
              weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:108)
              at
              weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:137)
              at
              weblogic.jms.dispatcher.DispatcherImpl_814_WLStub.dispatchSyncFuture(Unknown
              Source)
              at
              weblogic.jms.dispatcher.DispatcherWrapperState.dispatchSync(DispatcherWrapperState.java:3
              45)
              at
              weblogic.jms.client.JMSConnection.destroyTemporaryDestination(JMSConnection.java:1089)
              at
              weblogic.jms.common.DestinationImpl.delete(DestinationImpl.java:455)
              at
              com.trs.cv.fmk.fcms.common.impl.TimeoutQueueRequestor.request(TimeoutQueueRequestor.java:
              203)
              at
              com.trs.cv.fmk.fcms.cas.client.impl.CasCnsIntegration.request(CasCnsIntegration.java:203)
              Thanks,
              Nasrin

    If there are still application receivers on the temporary destination, the call will fail. (As specified in the JMS javadoc.) Perhaps this is the reason for the exception? In which case the application needs to close its receivers first.

  • When Broker Restarts None of the Temporary Queues Are Created

    Somehow when the broker restarts none of the temporary queues are getting recreated. The queues were created successfully the 1st time and the applications were happily exchanging messages. Things just fall apart when the broker restarts.
    I'm able to reproduce this problem consistently by doing the following:
    1. Start imqbrokerd (mq start)
    2. Start client application
    3. Shutdown imbrokerd (mq stop)
    4. Start imqbrokerd (mq start)
    After the producers in the client application have reconnected the following messages are displayed in the console. I'm only able to get the client app to work again is if I restart the client apps.
    [02/Mar/2009:23:01:01 CST] attempting to set Message Bytes Limit to 10485760K for destination temporary_destination://queue/192.168.20.14/49823/1 [Queue]
    [02/Mar/2009:23:01:01 CST] attempting to set Message Size Limit to 10240K for destination temporary_destination://queue/192.168.20.14/49823/1 [Queue]
    [02/Mar/2009:23:01:01 CST] [B1065]: Accepting: [email protected]:57123->jms:37646. Count: service=9 broker=9
    [02/Mar/2009:23:01:01 CST] [B2083]: Unable to create destination temporary_destination://queue/192.168.20.14/49823/1 [Queue], autocreation is forbidden
    Do you guys have any idea on what's going on? Does anybody know of an existing workaround?
    Environment:
    - OpenMQ 4.3
    - CentOS 5.2
    - Sun JDK 1.6_05
    - Spring 2.5.5
    - Camel 1.3.0
    I also looked at the code and found only one location where the error message is used. I still need to figure our how I can get the conditional expression to evaluate to false.
    share/java/com/sun/messaging/jmq/jmsserver/core/Destination.java
    1395 if (!DestType.isAdmin(type) && !canAutoCreate(DestType.isQueue(type),type) && !BrokerMonitor.isInternal(destination)) {
    1396 throw new BrokerException(
    1397 Globals.getBrokerResources().getKString(
    1398 BrokerResources.W_DST_NO_AUTOCREATE,
    1399 getName()),
    1400 BrokerResources.W_DST_NO_AUTOCREATE,
    1401 (Throwable) null,
    1402 Status.FORBIDDEN);
    -bash-3.2$ /tmp/openmq-4.3/mq/bin/imqcmd query bkr -t q -n MYQUEUE -u admin
    Password: admin
    Querying the broker specified by:
    Host Primary Port
    localhost 7676
    Version 4.3
    Instance Name imqbroker
    Broker ID
    Primary Port 7676
    Broker is Embedded false
    Instance Configuration/Data Root Directory /tmp/openmq-4.3-data/var/mq
    Current Number of Messages in System 202
    Current Total Message Bytes in System 317483
    Current Number of Messages in Dead Message Queue 201
    Current Total Message Bytes in Dead Message Queue 316444
    Log Dead Messages true
    Truncate Message Body in Dead Message Queue false
    Max Number of Messages in System unlimited (-1)
    Max Total Message Bytes in System unlimited (-1)
    Max Message Size 70m
    Auto Create Queues true
    Auto Create Topics true
    Auto Created Queue Max Number of Active Consumers unlimited (-1)
    Auto Created Queue Max Number of Backup Consumers 0
    Cluster ID
    Cluster is Highly Available false
    Cluster Broker List (active) mq://192.168.1.123:7676/
    Cluster Broker List (configured)
    Cluster Master Broker
    Cluster URL
    Log Level DEBUG
    Log Rollover Interval (seconds) 604800
    Log Rollover Size (bytes) 268435456
    Successfully queried the broker.
    I also tried versions 4.4 and 4.2 and received the same behavior :(

    The application is inside an app server but we're not using a resource adapter as we're using Spring and Camel to hide the JMS details. Spring (JMSComponent) manages the connection directly. (We current don't have any JMS connection pooling as well.)
    <bean id="jmsTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager">
    <property name="connectionFactory" ref="jmsConnectionFactory" />
    </bean>
    <bean id="jmsConnectionFactory" class="com.norvax.framework.jms.OpenMQConnectionFactory">
    <property name="openmqBrokerConfiguration">
    <props>
    <prop key="imqBrokerHostName">$remoting{openmq.hostName}</prop>
    <prop key="imqBrokerHostPort">$remoting{openmq.hostPort}</prop>
    <prop key="imqReconnect">true</prop>
    </props>
    </property>
    </bean>
    <bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
    <property name="connectionFactory" ref="jmsConnectionFactory" />
    </bean>
    I'm going to write a very basic producer using Spring without using Camel and see if I'll get the same behavior. I'd like to see if the way Camel uses JMS is what's making OpenMQ broker to deny creation of temporary queues.
    Thanks,
    Jeff

  • Temporary Queue BMQ size limit?

    Hi,
    is there a size limit for tha temporary queue on BEA Message queue?
    To explain better the ones managed by BMQ itself, not the permanent ones configured in the init files.
    I ask this since I have this kinf of transaction on my application:
    client send a message by BMQ to Server that performs the receive and send the ACK Message to client whose buffer is 30 KB(30.000 byte), so is there a size limit on the BEA Message Q temporary queues?
    Thanks.
    Ciao
    Andrea

    That depends. In most cases, there is no limit for tmq queue size.
    But you need to know the following things:
    1. On Unix/Win, the tmp queue is stored in the heap of qe process and doesn't have size limit. But on OVMS, tmp queue shares the global section with other queues. So obviously the max tmp queue size is limited.
    2. You can define the tmp queue quota in init file. In this case, the queue size is limited.
    3. If the tmp queue quota is exceeded, the message will be stored in SAF/DQF files, which may have size limit.
    4. If the message is sent cross groups, the message may be in link_buffer_pool when linkdriver is busy for network I/O. The link_buffer_pool is limited.
    5. Each message cannot exceed the specified max message in this group, which is defined in init file and needs to be less than or equal to 4M bytes.
    Regards,
    Leo

  • What port numbers are used when creating temporary queues

    Using the following code as an example, what port(s) are used when creating temporary queues? Is it a range of ports? Is it random? And is it configurable? If you have any insight on this, please let me know. Thanks.
    QueueConnection con = connectionFactory.createQueueConnection();
    QueueSession session = con.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
    TemporaryQueue replyQueue = session.createTemporaryQueue();

    The only ports I know about are the defaults ports:
    JMS 7676
    IIOP 3700
    Are these the only ports that are used, even for temporary queues?

  • Configuring an MDB to an MQSeries Queue

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

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

  • OTMQ- Issue on creating temporary Queues

    Hi,
    I'm experiencing some issues when trying to create a temporary queue by using Oracle Tuxedo Message Queue. What is happening is:
    1- I call tpqattach without any queuename and setting the qattachctl parameters:
         qattachctl.attachmode = TMQ_ATTACH_TEMPORARY;
        qattachctl.qtype = TMQ_ATTACH_PQ;
    2- The tpqattach runs successfully (return is different than -1) but it does not set my queue name with the temporary queue name that has been assigned for my process.
    Is there any parameter that I'm missing in order to create a temporary queue? How can I get the temp queue name?
    Thanks in advance,
    Brunno Attorre

    Hey Bob,
    Thanks for the answer!
    That's exactly it.
    Thank you,
    Brunno Attorre

Maybe you are looking for