介绍
JMS:Java消息服务(Java Message Service,JMS)
- Java消息服务是一个与具体平台无关的API;
- Java消息服务的规范包括两种消息模式,点对点和发布者/订阅者;
- Java消息服务支持同步和异步的消息处理;
- Java消息服务支持面向事件的方法接收消息,事件驱动的程序设计。
ActiveMQ:Apache ActiveMQ
- 开源消息中间件;
- 纯Java程序
- ActiveMQ管理控制台:http://127.0.0.1:8161/admin/ (admin/admin)
点对点消息实现
消息生产者:
1 | public class Producer { |
消息消费方式一:Receive
1 | public class ConsumerReceive { |
- Session.AUTO_ACKNOWLEDGE:当客户成功的从receive方法返回的时候,或者从MessageListener.onMessage 方法成功返回的时候,会话自动确认客户收到的消息。
- Session.CLIENT_ACKNOWLEDGE: 客户通过消息的 acknowledge 方法确认消息。需要注意的是,在这种模 式中,确认是在会话层上进行:确认一个被消费的消息将自动确认所有已被会话消 费的消息。例如,如果一 个消息消费者消费了 10 个消息,然后确认第 5 个消息,那么所有 10 个消息都被确认。
- Session.DUPS_ACKNOWLEDGE : 该选择只是会话迟钝第确认消息的提交。如果 JMS provider 失败,那么可 能会导致一些重复的消息。如果是重复的消息,那么 JMS provider 必须把消息头的 JMSRedelivered 字段设置 为 true。
消息消费方式二:Listener
1 | public class ConsumerListener { |
Listener方式消息监听:
1 | public class Listener implements MessageListener { |
结果:
发布-订阅消息实现
先订阅才能收到发布的消息。
消息发布者:
1 | public class ProfucerIssue { |
消息订阅者一:
1 | public class ConsumerSubscribe1 { |
消息订阅者二:
1 | public class ConsumerSubscribe2 { |
结果: