activeMq遇到的一些问题

1、错误:Channel was inactive for too long  (服务器消息较长时间没有消息发送时,客户端会报这个错误)
解决方法:在建立连接的Uri中加入:
       jms.activemq.brokerURL=nio://127.0.0.1:61618?tcpNoDelay=true&wireFormat.maxInactivityDuration=0
2、ActiveMQ发送模式
(1)ActiveMQ异步发送,只需新增参数transport.useAsyncSend=true,具体如下:
      
activeMQ默认情况下就是同步发送

3、错误:The Session is closed(网络异常时客户端会报出这个错误)
解决办法:在建立连接的Uri中加入: maxReconnectDelay=10000
maxReconnectDelay 最大重连间隔

4、ActiveMQ负责均衡
对broker采取了负载均衡和基于共享文件系统的主备配置,这个时候,客户端生产者和消费者的URI中用
failover:(tcp://192.168.1.117:61616,tcp://192.168.1.118:61616,tcp://broker3:61616)

5、ActiveMQ的ACK设置
根据不同的需要可以将ACK设置为Session::CLIENT_ACKNOWLEDGE 或 Session::AUTO_ACKNOWLEDGE 默认为Session::AUTO_ACKNOWLEDGE  如:
if( clientAck )
{
session = connection->createSession( Session::CLIENT_ACKNOWLEDGE);
}
else
{
session = connection->createSession( Session::AUTO_ACKNOWLEDGE);
}
6、ActiveMQ的Topic设置
根据不同的需要可以将Topic设置为Topic或 Queue默认为Queue如:
if(useTopic)
{
destination = session->createTopic(destURI);
}
else
{
destination = session->createQueue(destURI);
}
7、ActiveMQ的DeliveryMode设置(生产者时设置)
根据不同的需要可以将DeliveryMode设置为DeliveryMode::NON_PERSISTENT或 DeliveryMode::PERSISTENT默认为DeliveryMode::NON_PERSISTENT如:
if(usePersistent)
{
producer->setDeliveryMode( DeliveryMode::PERSISTENT);
}
else
{
producer->setDeliveryMode( DeliveryMode::NON_PERSISTENT);

}

8、activemq抛出如下异常:java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:375)
at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:269)
at org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:226)
at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:218)
at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:201)
at java.lang.Thread.run(Thread.java:619)


这是因为用jenkins自动部署时候tomcat关闭连接,但另一边仍在做读取这样的操作造成的。
如果客户端关闭了连接,服务器端要知道这个关闭讯息是有点时间延迟的。这段时间里,
服务器端里会驻留一些连接打开的资源。如果并发量较高,客户端关了较为频繁。那么服务器端的驻留
资源越积累越多,这是个不小的隐患。有可能造成大量的连接被占用,而且同时会占用大量内存。
虽然,最终是会被释放掉。但垃圾收集是有个度量的准则的,如果信息质过大,那么垃圾收集会不堪重负。
如果你的activeMq是连接池分发的,由spring管理的,这里你还要测试下连接池与spring管理连接在高并发下是否
存在问题。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值