前段时间配置了rabbitMQ 主要是为了公司发送大批量邮件而服务,结果锦鲤说要用actionMQ,还能说什么,肯定是actionMq的走起了。
鉴于第一次配置、使用ActionMQ,所以进行详细的配置,记录。如果有最新的用法,或者跟详细、更深入的使用,我会不定期的更新,
期待和小伙伴们共同进步。
添加MAVEN依赖
<!--添加activemq的依赖--><!--ActiveMQ-->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-broker</artifactId>
<version>5.14.5</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.14.5</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-spring</artifactId>
<version>5.14.5</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>artemis-jms-client</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${org.springframework.version}</version>
</dependency>
这里有的小伙伴可能依赖了
<dependency><groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.9.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${org.springframework.version}</version>
</dependency>
毕竟一个顶的上上面的一大堆了,可出问题的时候也是来的猝不及防的。slf4j 冲突。大部分的程序中都会有slf4j,如果你报错了,就乖乖用上面的一大堆把。或者可以考虑把冲突的包从Maven程序中排除。具体怎么排除,可以百度了。
配置文件 (对于我个人来说,第一步,就是搞定配置文件,类什么的在配置的过程中再去书写)
1 <?xml version="1.0" encoding="UTF-8" ?> 2 3 <beans xmlns="http://www.springframework.org/schema/beans" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xmlns:context="http://www.springframework.org/schema/context" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans 7 http:// 8 http:// 9 http:// "> 10 11 <context:annotation-config /> 12 13 <!--Activemq的连接工厂--> 14 <bean class="org.apache.activemq.ActiveMQConnectionFactory"> 15 <property value="tcp://127.0.0.1:61616" /> 16 <property ref="activeMQRedeliveryPolicy" /> <!-- 引用重发机制 --> 17 </bean> 18 <!--spring jms为我们提供的连接池 获取一个连接工厂--> 19 <bean class="org.springframework.jms.connection.SingleConnectionFactory"> 20 <property ref="targetConnectionFactory" /> 21 </bean> 22 23 <!-- 消息目的地 点对点的模式--> 24 <bean class="org.apache.activemq.command.ActiveMQQueue"> 25 <constructor-arg value="SpringActiveMQMsg"/> 26 </bean> 27 <!-- 消息目的地 点对点的模式--> 28 <bean class="org.apache.activemq.command.ActiveMQQueue"> 29 <constructor-arg value="EmailMQMsg"/> 30 </bean> 31 <!-- jms模板 用于进行消息发送--> 32 <bean class="org.springframework.jms.core.JmsTemplate"> 33 <property ref="connectionFactory"/> 34 </bean> 35 <!--注入我们的生产者--> 36 <bean class="mq.ProduceServiceImpl"/> 37 38 39 <!-- 配置消息监听器--> 40 <bean class="mq.SimpleMsgListener"/> 41 <!--配置消息容器--> 42 <bean id ="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> 43 <!--配置连接工厂--> 44 <property ref="connectionFactory"/> 45 <!--配置监听的队列--> 46 <property ref="queueDestination"/> 47 <!--配置消息监听器--> 48 <property ref="SimpleMsgListener"/> 49 <!--应答模式--> 50 <property value="4"></property> 51 </bean> 52 53 54 <!-- 定义ReDelivery(重发机制)机制 ,重发时间间隔是100毫秒,最大重发次数是3次 http:// --> 55 <bean class="org.apache.activemq.RedeliveryPolicy"> 56 <!--是否在每次尝试重新发送失败后,增长这个等待时间 --> 57 <property value="true"></property> 58 <!--重发次数,默认为6次 这里设置为1次 --> 59 <property value="2"></property> 60 <!--重发时间间隔,默认为1秒 --> 61 <property value="1000"></property> 62 <!--第一次失败后重新发送之前等待500毫秒,第二次失败再等待500 * 2毫秒,这里的2就是value --> 63 <property value="2"></property> 64 <!--最大传送延迟,只在useExponentialBackOff为true时有效(V5.5),假设首次重连间隔为10ms,倍数为2,那么第 65 二次重连时间间隔为 20ms,第三次重连时间间隔为40ms,当重连时间间隔大的最大重连时间间隔时,以后每次重连时间间隔都为最大重连时间间隔。 --> 66 <property value="1000"></property> 67 </bean> 68 </beans>