Donny的技术博客

用代码征服世界

这是一个简单的技术博客

  
ActiveMQ之慢消费者处理
慢消费者在非持久性主题上会出现问题,因为它们会强制broker为它们在内存保留旧消息。一旦填满,就会导致broker放慢生产者的速度,导致快的消费者也会变慢。ActiveMQ提供了几种策略来丢弃老的消息并保留一定数量的最新消息在内存中。
ActiveMQ之消息选择器(Message Selectors)
我们可以在消息属性设置JMSXGroupID来为消息分组,broker在转发消息到consumer前会将相同分组的消息转发给同一个消费者。我们也可以使用JMS的消息选择器实现这一功能。JMS Selectors用在获取消息的时候,可以基于消息属性和Xpath语法对消息进行过滤。所以功能上比Message Group更加强大。
ActiveMQ请求回复
JMS支持Request/Reply模式,在消息生产者发送消息时设置回复消息的目的地,在Consumer接收到消息后,可以回复消息。
ActiveMQ顺序消费消息+消息分组
Queue中的消息是按照顺序发送给Consumers的。然而,当你有多个Consumer同时从相同的Queue提取消息时,顺序将不能得到保证。因为这些消息时被多个线程并发的处理。但是,有时候保证消息的顺序是很重要的。例如,你可能不希望插入订单操作结束之前执行更新订单的操作。那么我们可以通过Exclusive Consumer和Message Groups来实现这一目的。