geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tomasz Mazan <win...@wp.pl>
Subject Strange plug with delivering messages to MDB
Date Thu, 17 Jan 2008 16:32:14 GMT

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