现象
Active Mq 客户端连接Active Mq服务端时,如果因为服务器重启等原因导致Mq客户端无法发送Mq消息
原因
Mq客户端的连接和服务端已经断开,但是客户端没有进行重连
解决方法
Mq断开连接后,可以自动重连
main.properties
main.openmq.sName=330103000000800536
main.openmq.sPwd=123456
main.openmq.sIp=10.30.4.89
main.openmq.sPort=57666
spring+Active的配置:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<context:annotation-config />
<context:component-scan base-package="
com.dahuazwan.ihds.mq.productor
" />
<!-- enable transaction demarcation with annotations -->
<tx:annotation-driven />
<!-- OpenMq -->
<bean id = "connectionFactory" class = "org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://${main.openmq.sIp}:${main.openmq.sPort}" />
<property name="userName" value="${main.openmq.sName}" />
<property name="password" value="${main.openmq.sPwd}" />
</bean>
<!-- 采用TCP长连接方式, 避免每次建立短连接需要的额外工作时间 -->
<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
<constructor-arg ref="connectionFactory"></constructor-arg>
</bean>
<!-- jms Template -->
<bean id="innerJmsTemplate"
class="org.springframework.jms.core.JmsTemplate" >
<property name="connectionFactory" >
<bean class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory" ref="pooledConnectionFactory" />
<property name="reconnectOnException" value="true"/>
</bean>
</property>
<property name="timeToLive" value="1000000"/>
<property name="receiveTimeout" value="222222" />
</bean>
<!-- Sms Destination -->
<bean id="smsDestination" class="org.apache.activemq.command.ActiveMQTopic">
<constructor-arg index="0" value="zw.public.all.sms"/>
</bean>
</beans>
里面的关键代码段是:
<property name="connectionFactory" >
<bean class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory" ref="pooledConnectionFactory" />
<property name="reconnectOnException" value="true"/>
</bean>
</property>
如果设置reconnectOnException=true,则Jms连接发生异常时,重新向服务端发起连接,默认是false
参考文献:
Spring JMS (3)
分享到:
相关推荐
3. 可能还有其他依赖库:如连接池管理库(如HikariCP、C3P0等),用于优化数据库连接的创建和管理,提高性能和资源利用率。 将这些jar包放入项目的lib目录下,意味着它们将成为项目的一部分,供代码在运行时使用。...
本文将详细介绍ActiveMQ在高并发环境下的优化策略,包括异常处理、连接池使用、消费者公平调度以及系统整体扩展等方面。 #### 二、高并发发送消息异常及其解决 ##### 现象描述 当使用多个线程(如10个)以一定频率...
- **资源管理**:管理和配置各种资源,如数据库连接池、消息队列等。 - **性能优化**:通过缓存机制、负载均衡等手段提高系统的整体性能。 - **安全管理**:实现访问控制、加密传输等功能,保护企业应用免受攻击。 ...
5. **数据源与连接池**:WebLogic Server支持JDBC数据源的配置,用于应用程序连接数据库。连接池管理数据源的分配和回收,提高系统性能。 6. **安全管理**:WebLogic Server提供角色、用户和权限的管理,支持SSL/...
2. **数据库连接配置**:订单微服务需要与数据库交互,因此配置文件中会有数据库连接的相关信息,如数据库类型(MySQL、Oracle等)、URL、用户名、密码以及连接池配置(如HikariCP或Druid)。 3. **服务发现**:在...
ca 源码 java Case 案例合集 此项目定位是一个开箱即用的百宝箱项目 ...数据库连接池 , 分库分表 , 分布式事务处理 Case 4 Security 数据安全框架 , OAuth ,SAML 相关实现 Case 5 MQ Rabbit , Active