67,513
社区成员
发帖
与我相关
我的任务
分享
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://activemq.org/config/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://activemq.org/config/1.0 http://activemq.apache.org/schema/core/activemq-core-5.0.0.xsd">
<!--
使用spring的listenerContainer,消息用持久化保存,服务器重启不会丢失
-->
<amq:broker useJmx="false" persistent="true">
<amq:networkConnectors>
<amq:networkConnector uri="static:(tcp://192.168.0.37:61616)" dynamicOnly="false" conduitSubscriptions="true"></amq:networkConnector>
</amq:networkConnectors>
<amq:persistenceAdapter>
<amq:jdbcPersistenceAdapter id="jdbcAdapter" dataSource="#hsql-ds" createTablesOnStartup="true"
useDatabaseLock="false"/>
<!--
Mysql can setup useDatabaseLock="true",this is defualt
HSQLDB,MSSQL plz setup useDatabaseLock="false",
if u setup useDatabaseLock="true",u will catch error:
MSSQL Error Info:FOR UPDATE clause allowed only for DECLARE CURSOR
HSQLDB Error Info:FOR in statement [SELECT * FROM ACTIVEMQ_LOCK FOR UPDATE]
see http://www.nabble.com/ActiveMQ-JDBC-Persistence-with-SQL-Server-tf2022248.html#a5560296
-->
</amq:persistenceAdapter>
</amq:broker>
<!-- ActiveMQ connectionFactory -->
<amq:connectionFactory id="jmsConnectionFactory" brokerURL="tcp://192.168.0.37:61616?wireFormat.maxInactivityDuration=0"/>
<!-- ActiveMQ destinations -->
<!-- <amq:queue name="destination" physicalName="org.apache.activemq.spring.Test.spring.embedded"/> -->
<amq:topic name="Topic" physicalName="com.model.bo.Author">
</amq:topic>
<amq:queue name="Queue" physicalName="com.model.bo.Author">
</amq:queue>
<bean id="destination" class="javax.jms.Destination"></bean>
<!-- The HSQL Datasource that will be used by the Broker -->
<bean id="hsql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url">
<value>jdbc:mysql://192.168.0.37:3306/test?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true</value>
</property>
<property name="username" value="root"/>
<property name="password" value=""/>
<property name="poolPreparedStatements" value="true"/>
</bean>
<!-- Spring JmsTemplate config -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<!-- lets wrap in a pool to avoid creating a connection per send -->
<bean class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory" ref="jmsConnectionFactory"/>
</bean>
</property>
<!-- custom MessageConverter -->
<property name="messageConverter" ref="messageTConverter"/>
<property name="defaultDestination" ref="destination">
</property>
</bean>
<!-- Message converter -->
<bean id="messageTConverter" class="com.activemq.MessageTConverter"/>
<!-- POJO which send Message uses Spring JmsTemplate -->
<!-- <bean id="topicMessageTProducer" class="com.activemq.TopicMessageTProducerImpl">
<property name="jmsTemplate" ref="jmsTemplate"/>
<property name="destination" ref="destination"/>
</bean>
<bean id="queueMessageTProducer" class="com.activemq.QueueMessageTProducerImpl">
<property name="jmsTemplate" ref="jmsTemplate"/>
<property name="destination" ref="destination"/>
</bean> -->
<bean id="topicMessageTProducer" class="com.activemq.TopicMessageTProducerImpl">
<property name="jmsTemplate" ref="jmsTemplate"/>
<property name="destination" ref="Topic"/>
</bean>
<bean id="queueMessageTProducer" class="com.activemq.QueueMessageTProducerImpl">
<property name="jmsTemplate" ref="jmsTemplate"/>
<property name="destination" ref="Queue"/>
</bean>
<!-- Message Driven POJO (MDP) -->
<bean id="topicMessageListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
<constructor-arg>
<bean class="com.activemq.TopicMessageTConsumerImpl">
</bean>
</constructor-arg>
<!-- may be other method -->
<property name="defaultListenerMethod" value="findMesageT"/>
<!-- custom MessageConverter define -->
<property name="messageConverter" ref="messageTConverter"/>
</bean>
<bean id="queueMessageListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
<constructor-arg>
<bean class="com.activemq.QueueMessageTConsumerImpl">
</bean>
</constructor-arg>
<!-- may be other method -->
<property name="defaultListenerMethod" value="findMesageT"/>
<!-- custom MessageConverter define -->
<property name="messageConverter" ref="messageTConverter"/>
</bean>
<!-- listener container,MDP无需实现接口 -->
<bean id="topicListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
<property name="destination" ref="Topic"/>
<property name="messageListener" ref="topicMessageListener"/>
</bean>
<bean id="queueListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
<property name="destination" ref="Queue"/>
<property name="messageListener" ref="queueMessageListener"/>
</bean>
</beans>