JMS----消息服务

在JAVA中, 如果两个应用程序之间对各自都不了解, 甚至这两个程序都部署在不同的洲上, 那么他们之间是如何传递消息的呢?而且, 不止一个程序需要互相发送消息, JAVA提供了最佳的解决方案—JMS,

优势: JMS 是天生异步的, 客户端获取消息的 时候吗不需要主动发sing请求, 消息会自动发送给可用的客户端.
可靠: JMS保证消息只会传递一次, 大家都遇到过重复创建消息的问题, 而JMS能帮你避免该问题, 只是避免而不是杜绝, 所以在一些草稿的环境下还有可能出现重复

JMS消息的传递类型:
P2P(点对点消息传送模型):
发送者—> 消息队列—> 接收者
这里写图片描述

特点: 每个消息只有一个消费者(consumer), 即一旦消费, 消息就不再在消息队列中
    发送者和接收者之间在时间上没有依赖性, 也就是说当发送者发送了消息之后, 不管接收者有没有正在运行, 它不会影响到消息被发送到队列
    接收者在成功接收消息之后需向队列应答成功
如果你希望每个消息都应该被成功处理的话, 那么你需要P2P模式

Pub/Sub(发布/订阅消息传递模型):
这里写图片描述
发布者(publisher)—> 主题(Topic) —>订阅者(subscriber)
客户端将消息发送到主题, 多个发布者将消息发送到Topic, 系统将这些消息传递给订阅者

特点:
    每个消息可以有多个消费者
    发布者和订阅者之间有时间上的依赖性,针对某个主题的订阅者,它必须创建一个订阅之后, 才能消费发布的消息, 而且为了消息信息, 订阅者必须保持运行状态 
    为了缓和这样严格的和时间的相关性,JMS允许订阅者创建一个可持久化的订阅, 这样, 及时订阅者没有被激活, 它也能接收发布者的消息

消息的消费:
在JMS中, 消息的产生和消息是异步的, 对于消费来说, JMS的消费者可以通过两证方式来消费消息
同步: 订阅者和接收者用receive来接收消息, receive方法能够在接收到消息之前, 将一直阻塞’
异步:订阅者和接收者都可以注册为一个消息监听器. 当消息送达后,系统自动调用监听器的onMessage方法.

JMS编程:

ConnectionFactory: 创建 Connection 对象, 针对不同的jms 消息模型, 分别有QueueConnectionFactory和TopicConnectionFactory两种

Connection : 是表示在客户端和jms系统之间建立的链接(对TCP/IP socket的包装) , Connection 可以产生一个或多个session,Connection也有两种类型:QueueConnection和TopicConnection。
Session: 是我们操作消息的接口, 可以通过Session创建生产者, 消费者, 消息等. Session提供了事务功能, 也分QueueSession和TopicSession。

消息生产者(Message Producers): 消息生产者由session创建, 并用于将消息发送到Destination, 消息生产者分两种类型:QueueSender和TopicPublisher。可以调用消息生产者的方法(send或publish方法)发送消息。

消息消费者(Message Consumers): 是由session 创建, 用于接收被发送到Destination的消息.两种类型:QueueReceiver和TopicSubscriber。可分别通过session的createReceiver(Queue)或createSubscriber(Topic)来创建。当然,也可以session的creatDurableSubscriber方法来创建持久化的订阅者。

消息监听者(Message Listeners): 如果注册了消息监听器, 一旦消息送达, 将自动调用监听器的onMessage方法。EJB中的MDB(Message-Driven Bean)就是一种MessageListener。

这里写图片描述

ActiveMQ:
访问Active MQ的后台管理系统,地址为:http://127.0.0.1:8161/admin/ 用户名/密码:admin/admin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值