分享

事务-Spring 配置 ActiveMQ

 instl 2013-11-25

<!-- ////////////////////////////////////////// -->
<!-- For JMS (ActiveMQ) Begin -->
<!-- ////////////////////////////////////////// -->
<bean id="broker"
class="org.apache.activemq.xbean.BrokerFactoryBean">
<property name="config" value="classpath:activemq.xml" />
<property name="start" value="true" />
</bean>

<bean id="jmsConnectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory"
depends-on="broker">
<property name="brokerURL" value="vm://billing" />
</bean>

<!--<amq:connectionFactory id="jmsConnectionFactory" brokerURL="vm://localhost"/>-->

<bean id="jmsFactoryPool"
class="org.apache.activemq.pool.PooledConnectionFactory">
<property name="connectionFactory" ref="jmsConnectionFactory" />
</bean>

<bean id="jmsTransactionManager"
class="org.springframework.jms.connection.JmsTransactionManager">
<property name="connectionFactory" ref="jmsConnectionFactory" />
</bean>

<bean id="messageConverter"
class="org.springframework.jms.support.converter.SimpleMessageConverter" />

<bean id="jmsTemplate"
class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jmsFactoryPool" />
<property name="messageConverter" ref="messageConverter" />
</bean>

<!-- ActiveMQ destinations to use -->
<amq:queue name="mBSettlementQueue"

physicalName="pp.queue.MBSettlementQueue" />

<!-- POJO which send success message by JmsTemplate and queue -->
<bean id="settlementMsgProducer"
class="com.pp.billing.settlement.SettlementMsgProducer">
<property name="jmsTemplate" ref="jmsTemplate" />
<property name="destination" ref="mBSettlementQueue" />
</bean>

<bean id="settlementMsgListener"
class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
<constructor-arg>
<bean
class="com.PP.billing.settlement.SettlementMsgListener">
</bean>
</constructor-arg>
<!-- may be other method -->
<property name="defaultListenerMethod" value="onMessage" />
<!-- custom MessageConverter define -->
<property name="messageConverter" ref="messageConverter" />
</bean>

<bean id="listenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<!-- property name="transactionManager" ref="jmsTransactionManager" / -->

  <property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destination" ref="mBSettlementQueue" />
<property name="messageListener" ref="settlementMsgListener" />
<property name="concurrentConsumers" value="2" />
<property name="recoveryInterval" value="3000" />
<property name="receiveTimeout" value="10000" />
</bean>

public class SoapGWProducer {
	/**
	 *define log object to print log record
	 */
	private static Log log = LogFactory.getLog(SoapGWProducer.class);

	/**
	 *define jmsTemplate
	 */
	private JmsTemplate jmsTemplate;

	/**
	 *define destination
	 */
	private Queue destination;

	/**
	 * @return Returns jmsTemplate.
	 */
	public JmsTemplate getJmsTemplate() {
		return jmsTemplate;
	}

	/**
	 * @param jmsTemplate The jmsTemplate to set.
	 */
	public void setJmsTemplate(JmsTemplate jmsTemplate) {
		this.jmsTemplate = jmsTemplate;
	}


	/**
	 * @return destination
	 */
	public Queue getDestination() {
		return destination;
	}

	/**
	 * @param destination destination
	 */
	public void setDestination(Queue destination) {
		this.destination = destination;
	}

	/**
	 * send message to queue
	 * @param message message
	 */
	public void send(SoapGWMessage message) {
		try {
			jmsTemplate.convertAndSend(this.destination, message);
		} catch (Exception e) {
			log.error("send SoapGWMessage to SoapGWQueue error:"
					+ e.getMessage(), e);
		}
	}
}
public class SoapGWListener {

	/**
	 *define log object to print the log content
	 */
	private static Log log = LogFactory.getLog(SoapGWListener.class);

	/**
	 *define start message content
	 */
	public static final String START_MESSAGE = "Start";

	/**
	 * listerner message and do mblox SoapGWMessage
	 * @param message message
	 */
	public void onMessage(SoapGWMessage message) {
		if (log.isInfoEnabled()) {
			log.info("start SoapGWListener onMessage(),parameter is:" + message);
		}
		//get message informatio
		String phoneNumber = message.getPhoneNumber();
	}

activemq.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<beans>
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>

    <broker xmlns="http:///config/1.0" brokerName="localhost">
    <persistenceAdapter>
        <jdbcPersistenceAdapter dataSource="#mssql-ds" useDatabaseLock="false">
            <statements>
                <statements binaryDataType ="binary(1024)"/>
            </statements>
         </jdbcPersistenceAdapter>
    </persistenceAdapter>

      <!-- Use the following to configure how ActiveMQ is exposed in JMX -->
      <managementContext>
         <managementContext connectorPort="1099" jmxDomainName="org.apache.activemq"/>
      </managementContext>
    </broker>

    <bean id="mssql-ds" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
      <property name="driverClass" value="$DB_DRIVERNAME"/>
      <property name="jdbcUrl" value="$DB_QUEUE_URL"/>
      <property name="user" value="$DB_QUEUE_USER"/>
      <property name="password" value="$DB_QUEUE_PASSWD"/>
      <property name="initialPoolSize" value="50"/>
      <property name="minPoolSize" value="20"/>
      <property name="maxPoolSize" value="1000"/>
      <property name="acquireIncrement" value="30"/>
      <property name="maxIdleTime" value="100"/>
      <property name="maxStatements" value="10"/>
    </bean>
</beans>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多