1个生产者,1个消费者,使用Queue: 方式1: 生产者将消息发送到Queue中,退出; 然后运行消费者: 、 可以看到,可以接收到消息。 方式2: 先运行消费者程序: 然后运行生产者: 消费者见下图: 1个生产者,2个消费者,使用Queue 先运行消费者1: 在运行消费者2: 接下来运行生产者: 下面是消费者消费情况: : 总结: 1. 使用Queue时,生产者只要将Message发送到MQ服务器端,消费者就可以进行消费,而无需生产者程序一直运行; 2. 消息是按照先入先出的顺序,一旦有消费者将Message消费,该Message就会从MQ服务器队列中删去; 3. 有文章说,“生产者”<-->"消费者"是一对一的关系,其实并不准确,从上面可以看出,一个生产者产生的消息,可以被 多个消费者进行消费,只不过多个消费者在消费消息时是竞争的关系,先得到的先消费,一旦消费完成,该消息就会出队列, 就不能被其他消费者再消费了,即“一次性消费”。 特点: 1.“离线一次性消费”; 离线:指生产者在发送消息时,不需要消费者在线,生产者只需要将消息发送到MQ队列中,消费者可以稍后上线取消息; 一次性消费:指消费者之间存在竞争关系,任何一个消费者将消息消费掉之后,其他消费者都不能再进行消费; 若是只有1个生产者和1个消费者,就是我们熟悉的“点对点”通信了; 类似场景对比: 类似送快递,快递员(producer)将快递(Message)放到指定地点(destination)后,就可以离开了, 拿快递的人(customer)在接收到通知后,到指定地点(destination)去取快递(Message)就可以了。 当然,取快递时可能要进行身份验证,这就涉及到创建连接(connection)时,需要指定用户名和密码了。 还有就是,实际生活中,当快递员把快递放好之后,照理说应该通知客户去哪里取快递,而ActiveMq帮我们 做好了一切,通知的工作Activemq会帮我们实现,而无需我们亲自编码通知消费者,生产者只需要将Message 放到Mq中即可,通知消费者的工作,mq会帮我们处理。 消费者程序:
生产者程序:
|
|