博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
activemq 消息阻塞优化和消息确认机制优化
阅读量:6504 次
发布时间:2019-06-24

本文共 1799 字,大约阅读时间需要 5 分钟。

一、消息阻塞优化

1.activemq消费者在从待消费队列中获取消息是会先进行预读取,默认是1000条(prefetch=1000)。这样很容易造成消息积压。

2.可以通过设置prefetch的默认值来调整预读取条数,java代码如下

//设置预读取为1 ActiveMQPrefetchPolicy p = new ActiveMQPrefetchPolicy(); p.setQueuePrefetch(1); //创建一个链接工厂 connectionFactory = new ActiveMQConnectionFactory(username, pwd, url_one); //设置预读取为1 connectionFactory.setPrefetchPolicy(p);  //从工厂中创建一个链接 connection = (ActiveMQConnection) connectionFactory.createConnection(); //启动链接 connection.start(); //创建一个事物session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE); queue = session.createQueue(queueResponse); consumer = session.createConsumer(queue); //设置消息监听器 consumer.setMessageListener(new ReceiveListener()); 二、消息确认机制优化 1.activemq默认是自动确认消费机制,即消费者接收了此消息,此消息便从待消费队列中剔除,进入已消费队列。 2.我们可以将消费确认模式改成手动确认。java代码如下:
//创建一个事物session
session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);

    createSession(paramA,paramB);

    paramA 取值有 : true or false 表示是否支持事务 

    paramB 取值有:Session.AUTO_ACKNOWLEDGE,Session.CLIENT_ACKNOWLEDGE,DUPS_OK_ACKNOWLEDGE,SESSION_TRANSACTE

 createSession(paramA,paramB); 

    paramA是设置事务的,paramB设置acknowledgment mode 
    paramA设置为false时:paramB的值可为Session.AUTO_ACKNOWLEDGE,Session.CLIENT_ACKNOWLEDGE,DUPS_OK_ACKNOWLEDGE其中一个。 
    paramA设置为true时:paramB的值忽略, acknowledgment mode被jms服务器设置为SESSION_TRANSACTED 。 
    Session.AUTO_ACKNOWLEDGE为自动确认,客户端发送和接收消息不需要做额外的工作。 
    Session.CLIENT_ACKNOWLEDGE为客户端确认。客户端接收到消息后,必须调用javax.jms.Message的acknowledge方法。jms服务器才会删除消息。 
    DUPS_OK_ACKNOWLEDGE允许副本的确认模式。一旦接收方应用程序的方法调用从处理消息处返回,会话对象就会确认消息的接收;而且允许重复确认。在需要考虑资源使用时,这种模式非常有效。

 3.然后在消费者监听器中,调用

msg.acknowledge();   方法来手动返回消费确认标志。代码如下:
  @Override   public void onMessage(Message message) {
    TextMessage msg = (TextMessage) message;
    //do something
    msg.acknowledge();
  }

 

 
 

    

转载于:https://www.cnblogs.com/raymond-yan/p/10449646.html

你可能感兴趣的文章
exchange 2003配置ASSP 反垃圾邮件
查看>>
webpack入门(二)what is webpack
查看>>
UnitOfWork以及其在ABP中的应用
查看>>
学习C语言必须知道的理论知识(第一章)
查看>>
for语句内嵌例题与个人理解
查看>>
眠眠interview Question
查看>>
[转]CSS hack大全&详解
查看>>
RPC-client异步收发核心细节?
查看>>
#define WIN32_LEAN_AND_MEAN 的作用
查看>>
仿余额宝数字跳动效果 TextCounter
查看>>
(10)Spring Boot修改端口号【从零开始学Spring Boot】
查看>>
Ubuntu16.04安装qt
查看>>
顶部滑动下拉广告
查看>>
简化代码的微小修改
查看>>
python之CSV文件格式
查看>>
你必须知道的.net学习总结
查看>>
leetcode之Reorder List
查看>>
Axure8.0 网页 or App 鼠标滚动效果
查看>>
文件操作示例脚本 tcl
查看>>
大家好,新年快乐。
查看>>