geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.com>
Subject Re: Strange plug with delivering messages to MDB
Date Thu, 17 Jan 2008 18:19:34 GMT
Do you have a second resource adapter configured for the inbound  
messages to the mdb?

I seem to recall someone reporting a similar problem if they sent the  
same message they received.  If they  copied the message into a new  
message and sent that everything worked as expected.  Are you sending  
the same message or copying it?  I don't know which behavior is  
expected by the jms spec.

thanks
david jencks

On Jan 17, 2008, at 8:32 AM, Tomasz Mazan wrote:

>
> I got MDB that listens to queue for messages.
> This MDB uses ConnectionFactory to get connection to send answer to  
> received
> message. Destination is gotten from replyTo message's field.
>
> There's quote from my resource adapter's deployment plan:
>
> 	<resourceadapter>
> 		<resourceadapter-instance>
> 			<resourceadapter-name>DriversJms</resourceadapter-name>
> 			<nam:workmanager
> xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.2">
> 				<nam:gbean-link>DefaultWorkManager</nam:gbean-link>
> 			</nam:workmanager>
> 		</resourceadapter-instance>
> 		<outbound-resourceadapter>
> 			<connection-definition>
> 			
> <connectionfactory-interface>javax.jms.ConnectionFactory</ 
> connectionfactory-interface>
> 				<connectiondefinition-instance>
> 					<name>DriversJmsXAConnectionFactory</name>
> 					<connectionmanager>
> 						<xa-transaction>
> 							<transaction-caching />
> 						</xa-transaction>
> 						<single-pool>
> 							<max-size>10</max-size>
> 							<blocking-timeout-milliseconds>5000</blocking-timeout- 
> milliseconds>
> 							<select-one-assume-match/>
> 						</single-pool>
> 					</connectionmanager>
> 				</connectiondefinition-instance>
> 			</connection-definition>
> 		</outbound-resourceadapter>
> 	</resourceadapter>
>
> My driver (MDB) uses activation config from openejb-jar.xml:
> 	<message-driven>
> 		<ejb-name>Das220JmsDriver</ejb-name>
> 		<nam:resource-adapter>
> 			<nam:resource-link>DriversJms</nam:resource-link>
> 		</nam:resource-adapter>
> 		<activation-config>
> 			<activation-config-property>
> 			
> <activation-config-property-name>destination</activation-config- 
> property-name>
> 			
> <activation-config-property-value>JmsDispatcherDAS220Request</ 
> activation-config-property-value>
> 			</activation-config-property>
> 			<activation-config-property>
> 			
> <activation-config-property-name>destinationType</activation-config- 
> property-name>
> 			
> <activation-config-property-value>javax.jms.Queue</activation- 
> config-property-value>
> 			</activation-config-property>
> 			<activation-config-property>
> 			
> <activation-config-property-name>acknowledgeMode</activation-config- 
> property-name>
> 			
> <activation-config-property-value>Auto-acknowledge</activation- 
> config-property-value>
> 			</activation-config-property>	
> 			<activation-config-property>
> 			
> <activation-config-property-name>InitialRedeliveryDelay</activation- 
> config-property-name>
> 			
> <activation-config-property-value>30000</activation-config-property- 
> value>
> 			</activation-config-property>
> 			<activation-config-property>
> 			
> <activation-config-property-name>MaximumRedeliveries</activation- 
> config-property-name>
> 			
> <activation-config-property-value>9999</activation-config-property- 
> value>
> 			</activation-config-property>
>  			<activation-config-property>
> 			
> <activation-config-property-name>maxMessagesPerSessions</activation- 
> config-property-name>
> 				<activation-config-property-value>1</activation-config-property- 
> value>
> 			</activation-config-property>			
> 		</activation-config>
> 	</message-driven>
>
> I set maxMessagesPerSessions because sometimes MDB has to consume more
> messages (it depends on currently processed message - it's kind of  
> cleaning
> queue from messages with lower priority). Now I've disabled this
> functionality, but in future it should work, so I don't want to set  
> greater
> valie for maxMessahesPerSessions.
>
> Where's the problem ?
> MDB processes let's say 7-13 messages and don't execute onMessage  
> until next
> module restart via geronimo's console.
>
> I've checked my MDB and I'm sure that all jms connections created  
> to send
> response are being closed:
>
> 	        Connection conn = null;
> 		Session sess = null;
> 		MessageProducer producer = null;
> 		try {
> 			conn = this.createConnection();
> 			sess = this.createSession(conn);
> 			producer = this.createMessageProducer(sess, replyToDest);
>
> 			ObjectMessage msg = this.createMessage(sess);
> 			msg.setObject(response);
>
> 			producer.send(msg, Message.DEFAULT_DELIVERY_MODE,
> originalMessage.getJMSPriority(), Message.DEFAULT_TIME_TO_LIVE);
>
> 			logger.info("Success response - sent.");
> 		} finally {
> 			try {
> 				if (producer != null) {
> 					producer.close();
> 				}
> 				if (sess != null) {
> 					sess.close();
> 				}
> 				if (conn != null) {
> 					conn.close();
> 				}
> 			} catch (JMSException e) {
> 				e.printStackTrace();
> 			}
> 		}
>
> Any idea what's wrong ?
>
> Thanks in advance
> Beniamin
> -- 
> View this message in context: http://www.nabble.com/Strange-plug- 
> with-delivering-messages-to-MDB-tp14923100s134p14923100.html
> Sent from the Apache Geronimo - Users mailing list archive at  
> Nabble.com.
>


Mime
View raw message