ActiveMQ

1.0首先先介绍一下JMS,Java Message Service(JMS)是SUN提出的旨在统一各种MOM(Message-Oriented Middleware )系统接口的规范,它包含点对点(Point to Point,PTP)和发布/订阅(Publish/Subscribe,pub/sub)两种消息模型,提供可靠消息传输、事务和消息过滤等机制。

简单的说,JMS制定了一个发消息的规范。是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。 ActiveMQ是Apache出品的开源项目,它是JMS规范的一个实现。

1.1 jms的作用、

在不同应用之间进行通信或者从一个系统传输数据到 另外一个系统。两个应用程序之间,或分布式系统中发送消息,进行异 步通信。     这类问题有很多解决方案 ,比如DB、SOA、Socket通信、RMI,等,但我 们需要根据项目的限制以及功能和性能的需要作出选择。 JMS的应用场景:规模和复杂度较高的分布式系统。 (1)同步通信:客户发出调用后,必须等待服务对象完成处理并返回结果后才能继续执行;

(2)客户和服务对象的生命周期紧密耦合:客户进程和服务对象进程都必须正常运行;如果由于服务对象崩溃或者网络故障导致客户的请求不可达,客户会接收到异常;

(3)点对点通信:客户的一次调用只发送给某个单独的目标对象。

1.2 jms的模型

Java消息服务应用程序结构支持两种模型:

1.点对点模型(基于队列) 每个消息只能有一个消费者。消息的生产者和消费者之间没有时间上的 相关性.可以由多个发送者,但只能被一个消费者消费。 一个消息只能被一个接受者接受一次 生产者把消息发送到队列中(Queue),这个队列可以理解为电视机频道(channel) 在这个消息中间件上有多个这样的channel 接受者无需订阅,当接受者未接受到消息时就会处于阻塞状态

2.  发布者/订阅者模型(基于主题的) 每个消息可以有多个消费者。 生产者和消费者之间有时间上的相关性。订阅一个主题的消费者只能消 费自它订阅之后发布的消息. 允许多个接受者,类似于广播的方式 生产者将消息发送到主题上(Topic) 接受者必须先订阅 注:持久化订阅者:特殊的消费者,告诉主题,我一直订阅着,即使网络断开,消息服务器也记住所有持久化订阅者,如果有新消息,也会知道必定有人回来消费。

关于点对点有一种情况是,生产者一直发消息到activemq的队列上,而消息者又一直不消费队列上的消息时,activemq的服务器会报错。

1.3 jms的公共接口

143442_lpYQ_3721784.png

1.4 jms的基本构件

ConnectionFactory:连接工厂是客户用来创建连接的对象,例如ActiveMQ提供的 ActiveMQConnectionFactory。

Connection: JMS Connection封装了JMS 客户端到JMS Provider 的连接与JMS提供者之间的一个虚拟的连接。

Session: JMS Session是生产和消费消息的一个单线程上下文。会话用于创建 消息的生产者(producer),消费者(consumer),消息(message)等, 会话,是一个事务性的上下文。 消息的生产和消费不能包含在同一个事务中。

MessageProducer:消息生产者,MessageProducer   由Session 对象创建的用来发送消息的对象

MessageConsumer :消息消费者,MessageConsumer  由Session 对象创建的用来发送消息的对象

Message :JMS定义的消息类型有TextMessage、MapMessage、BytesMessage、 StreamMessage和ObjectMessage。

Destination:消息目的地,是用来指定生产的消息的目标和它消费的消息的来源的对象。

消息队列:Queue 点对点的消息队列 消息主题:Tipic 发布订阅的消息队列

消息主题:Tipic 发布订阅的消息队列

144335_ih69_3721784.png

2. java 简单实现actviemq 进行发送和接收消息

144630_8obj_3721784.png

144818_DHlH_3721784.png

createMessage()是对发送的消息进行处理

144901_bfIa_3721784.png

 

 接收的程序也类似session.MessageConsumer(destination),destination对象指定的是队列名称,消息的来源

 

 

转载于:https://my.oschina.net/u/3721784/blog/1603961

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值