首页 > 其他 > 详细

ActiveMQ(4)---ActiveMQ原理分析之消息消费

时间:2019-04-08 00:44:44      阅读:156      评论:0      收藏:0      [点我收藏+]

消费端消费消息的原理

我们通过上一节课的讲解,知道有两种方法可以接收消息,一种是使用同步阻塞的MessageConsumer#receive方
法。另一种是使用消息监听器MessageListener。这里需要注意的是,在同一个session下,这两者不能同时工
作,也就是说不能针对不同消息采用不同的接收方式。否则会抛出异常。
至于为什么这么做,最大的原因还是在事务性会话中,两种消费模式的事务不好管控

消费端消费消息源码分析

ActiveMQMessageConsumer.receive消费端同步接收消息的源码入口

public Message receive() throws JMSException {
		checkClosed();
		checkMessageListener(); //检查receive和MessageListener是否同时配置在当前的会话中
		sendPullCommand(0); //如果PrefetchSizeSize为0并且unconsumerMessage为空,则发起pull命令
		MessageDispatch md = dequeue(-1); //从unconsumerMessage出队列获取消息
		if (md == null) {
		return null;
		}
		beforeMessageIsConsumed(md);
		afterMessageIsConsumed(md, false); //发送ack给到broker
		return createActiveMQMessage(md);//获取消息并返回
		}

  技术分享图片

 

ActiveMQ(4)---ActiveMQ原理分析之消息消费

原文:https://www.cnblogs.com/flgb/p/10668191.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!