JMS与ActiveMQ

JMS是Java消息服务的缩写,它提供了一种以松耦合且灵活的方式对应用进行集成的机制。JMS以异步的方式在应用之间进行数据的存储转发。应用之间以MOM(面向消息的中间件)为中介进行通信,而不是直接通信。

JMS 架构

JMS的主要组件有:

  • JMS提供者: 一个实现了JMS接口并提供了管理控制功能的消息系统。
  • 客户端: 用于收发JMS消息的Java应用. 发送消息的叫做生产者,而接收消息的叫做消费者。
  • 消息: 在JMS客户端之间进行消息通信的对象。
  • 被管理的对象: 由管理员创建给客户端使用的预配置JMS对象。

现在有一些可用的JMS提供者像Apache ActiveMQ和openMQ. 我这里使用的是Apache ActiveMQ.

在Windows上安装和启动Apache ActiveMQ

  1. 下载ActiveMQ windows二进制包。
  2. 将它解压到一个指定的目录。
  3. 根据命令提示将当前目录转到ActiveMQ安装目录下的bin目录并运行下面的命令来启动ActiveMQ

activemq

启动ActiveMQ后,你可以使用http://localhost:8161/admin/来访问管理控制台并执行管理任务。

JMS消息模型

JMS有两种消息模型, 分别是点对点消息模型和发布订阅模型.

点对点模型

生产者将消息发送到JMS提供者指定的队列里,同时有且仅有一个监听此队列的消费者可以收到消息。

点对点模型示例

例子1和例子2基本上是类似的,唯一的区别是例子1是通过程序来创建队列而例子2是使用 jndi.properties文件以命名目录的方式来创建队列.

例子1

例子2

jndi.properties

发布订阅模型

生产者将消息发送到JMS提供者指定的主题中,然后所有订阅了此主题的订阅者都将收到此主题的消息. 注意,只有处于活跃状态的订阅者才能收到消息.

发布订阅模型示例

JMS编程模型

原文发布于微信公众号 - IT技术精选文摘(ITHK01)

原文发表时间:2017-08-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏pangguoming

Centos下Yum安装PHP5.5,5.6,7.0

默认的版本太低了,手动安装有一些麻烦,想采用Yum安装的可以使用下面的方案: 1.检查当前安装的PHP包 yum list installed | grep p...

97430
来自专栏MessageQueue

Broker模块划分

Broker需要和NameServer及Client通信,包括Broker之间也需要通信(主从结构),所以Broker会有一个模块(Net&PacketHand...

13620
来自专栏乐沙弥的世界

快速体验Percona XtraDB Cluster(PXC)

Percona XtraDB Cluster(简称PXC)集群是基于Galera 2.x library,事务型应用下的通用的多主同步复制插件,主要用于解决强一...

12720
来自专栏Java工程师日常干货

ActiveMQ从入门到精通(三)利用Zookeeper实现ActiveMQ的高可用

这是ActiveMQ系列的最后一篇文章,主要是关于ActiveMQ集群,这里采用的方式是:Zookeeper+LevelDB+ActiveMQ。前面2篇博客地址...

14630
来自专栏浪淘沙

Kafka学习笔记

Apache Kafka 是分布式发布-订阅消息系统(消息中间件)。它最初由 LinkedIn 公司开发,之后成为 Apache 项目的一部分。Kafka ...

26830
来自专栏MessageQueue

Push or Pull?

采用Pull模型还是Push模型是很多中间件都会面临的一个问题。消息中间件、配置管理中心等都会需要考虑Client和Server之间的交互采用哪种模型:

23740
来自专栏待你如初见

Java中间件

17240
来自专栏开源项目

Git 项目推荐 | 基于go+protobuff 实现的分布式

eQ ? 基于go+protobuff实现的多种持久化方案的mq框架 Client For KiteQ Go: https://github.com/b...

526140
来自专栏云计算

教你五分钟在笔记本电脑上部署容器化应用程序

按照以下步骤设置Nirmata并部署应用程序:

21870
来自专栏云计算教程系列

如何在Ubuntu 14.04上安装和配置Salt Master和Minion服务器

SaltStack是一个功能强大,灵活,高性能的配置管理和远程执行系统。它可用于从集中位置管理您的基础架构,同时最大限度地减少手动维护步骤。

31600

扫码关注云+社区

领取腾讯云代金券