PublisherSubscriber(发布订阅者)消息模式开发流程
PublisherSubscriber 消息模式开发流程详解 PublisherSubscriber messaging 模式是指在分布式系统中,实现消息的发送和接收的模式。在这个模式中,有两个主要角色:发布者(Publisher)和订阅者(Subscriber)。发布者负责发送消息,而订阅者负责接收消息。这种模式广泛应用于各个领域,例如:聊天室、股票交易平台、物流系统等等。 在本文中,我们将详细讲解PublisherSubscriber 消息模式的开发流程,并提供了一个简单的示例代码,以便读者更好地理解这个模式。 订阅者(Subscriber)开发流程 在订阅者开发流程中,我们需要实现以下几个步骤: 1. 实现 MessageListener 接口:在 onMessage() 方法中监听发布者发出的消息队列,并做相应处理。 2. 创建 Connection:根据 url,user 和 password 创建一个 JMS Connection。 3. 创建 Session:在 connection 的基础上创建一个 session,同时设置是否支持事务和 ACKNOWLEDGE 标识。 4. 创建 Topic:创建两个 Topic,topictest.messages 用于接收发布者发出的消息,topictest.control 用于向发布者发送消息,实现双方的交互。 5. 创建 consumer 和 producer 对象:根据 topictest.messages 创建 consumer,根据 topictest.control 创建 producer。 6. 接收处理消息:在 onMessage() 方法中,对收到的消息进行处理,可直接简单在本地显示消息,或者根据消息内容不同处理对应的业务逻辑(比如:数据库更新、文件操作等等),并且可以使用 producer 对象将处理结果返回给发布者。 发布者(Publisher)开发流程 在发布者开发流程中,我们需要实现以下几个步骤: 1. 实现 MessageListener 接口:在 onMessage() 方法中接收订阅者的反馈消息。 2. 创建 Connection:根据 url,user 和 password 创建一个 JMS Connection。 3. 创建 Session:在 connection 的基础上创建一个 session,同时设置是否支持事务和 ACKNOWLEDGE 标识。 4. 创建 Topic:创建两个 Topic,topictest.messages 用于向订阅者发布消息,topictest.control 用于接收订阅者反馈的消息。这两个 Topic 与订阅者开发流程中的 Topic 是一一对应的。 5. 创建 consumer 和 producer 对象:根据 topictest.messages 创建 publisher;根据 topictest.control 创建 consumer,同时监听订阅者反馈的消息。 6. 给所有订阅者发送消息,并接收反馈消息:在示例代码中,一共重复 10 轮操作。每轮先向所有订阅者发送 2000 个消息;然后堵塞线程,开始等待;最后通过 onMessage() 方法,接收到订阅者反馈的“REPORT”类信息后,才 print 反馈信息并解除线程堵塞,进入下一轮。 示例代码 在示例代码中,我们使用 Java 语言来实现 PublisherSubscriber 消息模式。我们首先创建了一个 TopicListener.java 类,该类实现了 MessageListener 接口,并在 onMessage() 方法中监听发布者发出的消息队列。然后,我们创建了一个 TopicPublisher.java 类,该类也实现了 MessageListener 接口,并在 onMessage() 方法中接收订阅者的反馈消息。 优点 PublisherSubscriber 消息模式有以下几个优点: * 解耦合:发布者和订阅者之间没有直接的耦合关系,实现了系统的灵活性和可扩展性。 * 可扩展性:PublisherSubscriber 消息模式可以轻松地扩展到大型分布式系统中。 * 高效率:PublisherSubscriber 消息模式可以实现高效的消息传输,提高系统的性能。 结论 在本文中,我们详细讲解了 PublisherSubscriber 消息模式的开发流程,并提供了一个简单的示例代码,以便读者更好地理解这个模式。PublisherSubscriber 消息模式广泛应用于各个领域,具有解耦合、可扩展性和高效率等优点。
- zuolin08062012-09-27总结的一般吧。给点分吧
- 朋沙2016-05-30还可以,能吸取一些东西
- nielin4995101792018-06-25初学者参考了
- nanfeng3262013-04-03总结的不错,有参考价值
- dkdfsang2016-03-01分布式系统的经典应用
- 粉丝: 2
- 资源: 36
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助