04.wls jndi jms
DESCRIPTION
WebLogic 的JNDI和JMS配置TRANSCRIPT
WebLogic Server JMS 综述
孟和渠道售前咨询顾问
以下内容旨在概述产品的总体发展方向。此信息仅供参考,不可纳入任何合同。此信息不承诺提供任何资料、代码或功能,并且不应该作为制定购买决策的依据。此处所述有关 Oracle 产品的任何特性或功能的开发、发布以及相应的日程安排均由Oracle 自行决定。
Agenda
• WebLogic JNDI Overview
• WebLogic JMS
• JMS Overview
• WebLogic JMS Overview
• Configuring WebLogic JMS Server & Resources
• Configuring WebLogic JMS Store
• Configuring and monitoring WebLogic JMS Objects &
Message
• Distributed Destination
• WebLogic JMS Store-and-Forward
• WebLogic Server Unit-of-Order
• WebLogic Server Messaging Bridge
Agenda
• WebLogic JNDI Overview
• WebLogic JMS
• JMS Overview
• WebLogic JMS Overview
• Configuring WebLogic JMS Server & Resources
• Configuring WebLogic JMS Store
• Configuring and monitoring WebLogic JMS Objects &
Message
• Distributed Destination
• WebLogic JMS Store-and-Forward
• WebLogic Server Unit-of-Order
• WebLogic Server Messaging Bridge
什么是JNDI?
• JNDI(Java Naming and Directory Interface)一组在Java应用中统一访问命名和目录服务的API
• JNDI解决的主要问题:• 使用通用接口来访问不同种类的服务
• 可以同时连接到多个命名或目录服务上
• 建立起逻辑关联,允许把名称同Java对象或资源关联起来,而不必知道对象或资源的物理ID
• 满足企业级APIs对命名与服务的访问,诸如EJBs、JMS、JDBC 2.0以及IIOP上的RMI通过JNDI来使用CORBA的命名服务。
为什么使用JNDI
• 在Oracle WebLogic Server,JNDI起到Java EE对象仓库和查找服务的作用,包括:• EJB home stubs
• JDBC DataSources
• JMS connection factories, queues and topics
• RMI stubs
JNDI结构
命名服务
• 命名服务提供了一种为对象命名的机制,这样你就可以在无需知道对象位置的情况下获取和使用对象。
• 命名服务术语:
JNDI树
Context和Subcontext
• Subcontext通过“.”来表示
• 在放置对象之前,必须先创建Subcontext
• 通常,将对象绑定到JNDI树的同时会自动创建JNDI名指定的Subcontext
管理员需要了解的JNDI
• 为了更加方便进行系统管理工作,系统管理员需要懂得JNDI
• 检查对象是否已经绑定到JNDI树
• 在JNDI树上对Context进行安全设置
查看JNDI树
Agenda
• WebLogic JNDI Overview
• WebLogic JMS
• JMS Overview
• WebLogic JMS Overview
• Configuring WebLogic JMS Server & Resources
• Configuring WebLogic JMS Store
• Configuring and monitoring WebLogic JMS Objects &
Message
• Distributed Destination
• WebLogic JMS Store-and-Forward
• WebLogic Server Unit-of-Order
• WebLogic Server Messaging Bridge
JMS架构
• JMS – Java Message Service
JMS架构:连接
JMS架构:发送消息
消息模式
• 点对点模式(P2P):• 消息按照线性顺序存储于队列中
• 一个消息仅传递给一个接收者
• 发布/订阅模式(Pub/Sub):• 消息存储在主题中
• 消息传递给主题所有订阅者
JMS与事务
• JMS客户端可以同JTA参与到一个分布式事务中
• 相对的, JMS客户端只在JMS会话中确保事务完整性
• 参与事务是可选的
点对点消息模型
发布/订阅消息模型
Agenda
• WebLogic JNDI Overview
• WebLogic JMS
• JMS Overview
• WebLogic JMS Overview
• Configuring WebLogic JMS Server & Resources
• Configuring WebLogic JMS Store
• Configuring and monitoring WebLogic JMS Objects &
Message
• Distributed Destination
• WebLogic JMS Store-and-Forward
• WebLogic Server Unit-of-Order
• WebLogic Server Messaging Bridge
WebLogic JMS实现
• WebLogic JMS是集成在WebLogic Server中的企业级消息系统。
• 具有如下突出优势:• 极大提高的性能
• 消息存储持久化
• 分布式Destination
• Unit of Order
• 自动的透明客户端重连接
• 存储转发SAF
WebLogic JMS管理
• WebLogic JMS管理主要有两种方式:• 管理控制台
• 适合于一次创建单个资源、管理少量消息资源
• WLST
• 适合通过脚本批量创建、管理多个资源;脚本可以方便地实现自动化以及在环境间转换
管理控制台
WLST管理
WLST管理
WebLogic JMS架构
Agenda
• WebLogic JNDI Overview
• WebLogic JMS
• JMS Overview
• WebLogic JMS Overview
• Configuring WebLogic JMS Server & Resources
• Configuring WebLogic JMS Store
• Configuring and monitoring WebLogic JMS Objects &
Message
• Distributed Destination
• WebLogic JMS Store-and-Forward
• WebLogic Server Unit-of-Order
• WebLogic Server Messaging Bridge
WLS JMS Server
• 在WLS中,消息服务由JMS Server实现
• JMS实现对消息的接收和发送
创建JMS Server
为JMS Server设置目标服务器
配置JMS Server
JMS资源
• JMS资源可以作为系统组件也可以作为应用组件
JMS资源组件的配置与部署
• WebLogic Server中的JMS配置存储在JMS组件中• 配置规范需要遵从weblogicjmsmd.xsd
• 类似标准的J2EE组件
• 管理员可以创建和维护的JMS组件• 全局系统资源
• 全局standalone组件
• 企业应用组件
JMS资源组件的配置与部署(续)
• 组件化的配置带来简便的迁移性,例如:• 从开发环境到集成测试环境
• 从测试环境到生产环境
• 进行应用迁移时,关于JMS配置:• 不需要打开EAR文件进行修改
• 不需要太多的手动JMS重新配置
连接工厂(Connection Factories)
• JMS连接工厂主要用来设置缺省的连接参数,包括:
• Message priority
• Message time-to-live (TTL)
• Message persistence
• Transactional behavior
• Acknowledgement policy
• Flow control
• WLS提供一个缺省的客户端连接工厂:
• 使用WebLogic的缺省连接设置
• 绑定在JNDI树上:
weblogic.jms.ConnectoryFactory
创建连接工厂
配置连接工厂
Destination
• Destination是存储在JNDI中的轻量级对
• 是JMS server上发送或接收消息的目标
• JMS destination类型有:• Queue
• Topic
Queue Destinations
• JMS的点对点消息模式:• 客户端与一个queue destination通信
• 消息以串行(先进先出)方式被发送到消息接收方
• 每个消息只被发送到一个消息接收者
Topic Destinations
• JMS的发布、订阅模式:• 客户端与一个topic destination通信
• 消息被广播给所以的订阅者
• 消息被保存,直到最少有一个订阅者接收到
创建Destination
创建Destination (续)
创建Queue Destination
创建Queue Destination(续)
Threshold 和 Quota
• JMS Server和Destination对象可以设置threshold和quota值
• quota是针对JMS管理对象定义的限制,包括如下值:• 可存储的最大字节数
• 可存储的最大消息数
• threshold是触发message paging、flow control和logged warnings的限制值,包括:• 字节数的上限和下限
• 消息数的上限和下限
配置Thresholds和Quotas
Agenda
• WebLogic JNDI Overview
• WebLogic JMS
• JMS Overview
• WebLogic JMS Overview
• Configuring WebLogic JMS Server & Resources
• Configuring WebLogic JMS Store
• Configuring and monitoring WebLogic JMS Objects &
Message
• Distributed Destination
• WebLogic JMS Store-and-Forward
• WebLogic Server Unit-of-Order
• WebLogic Server Messaging Bridge
持久化订阅
• 持久化订阅可以确保即使消息接收者有时处于离线状态,也能正确的接收到消息
• 消息订阅者是否在线是根据其Java对象是否存在来判断的
• 缺省的,消息订阅者不是持久化的
• 管理员可以配置:• 消息需要持久化到哪里
• 持久化连接工厂和destination
需要使用持久化消息的场景
• 持久化消息确保内存中的消息被写到持久存储
• 有如下场景可以配置持久化消息:• 应用开发需要用到持久化订阅
• 需要确保服务器重启不丢失消息
持久化订阅工作机制
• 如果消息订阅客户端是活动状态的,消息会正常发布
• 如果消息订阅客户端是离线的,当其再次处于活动状态时,使用其ID来重新获取和发布消息
配置持久化订阅
• 在配置持久化订阅时,管理员需要:• 创建和配置JMS store
• 配置持久化的连接工厂和destinations
• 关联JMS store与JMS server
• 可以配置JMS store使用:• file store
• JDBC store (连接池)
消息持久化
• WLS通过持久化Store提供有质量保障的消息机制:• 即使服务器重启,消息也会正常收发
• 即使与服务器连接断开、重连,Topic订阅者客户也可以恢复丢失的消息
• 可以用下面的JMS Persistent Stores:• File system
• JDBC (需要一个已经存在的Data Source)
创建JMS Store
创建JMS JDBC Store
• 配置JMS JDBC持久化存储包括:• 创建JDBC DataSource.
• 创建JMS store 并且引用JDBC DataSource.
• 在JMS server的配置中JMS store
• 所需要的资源(包括数据库表等)会自动被创建
创建JMS JDBC Store
将Store指定到JMS Server
持久化连接工厂
配置持久化Destination
Agenda
• WebLogic JNDI Overview
• WebLogic JMS
• JMS Overview
• WebLogic JMS Overview
• Configuring WebLogic JMS Server & Resources
• Configuring WebLogic JMS Store
• Configuring and monitoring WebLogic JMS Objects &
Message
• Distributed Destination
• WebLogic JMS Store-and-Forward
• WebLogic Server Unit-of-Order
• WebLogic Server Messaging Bridge
JMS对象的统计
• WLS提供针对如下JMS对象的统计:• JMS servers
• Connections
• Destinations
监控JMS Server
监控和管理Destination
JMS消息管理
• 当消息在队列、主题中处理时,有时候需要手动管理消息:
• 举个例子,遇到某个队列中消息处理堵塞,你需要将消息传递到不同的队列以使其他消息消费者处理
• WebLogic提供了非常强大的消息管理工具
• 消息管理也支持管理控制台、WLST方式
WebLogic JMS消息管理特征
• WebLogicJMS消息管理可以方便的:• 查看消息
• 创建消息
• 转移消息
• 从文件导入消息
• 导出消息
• 删除消息
• 清除队列中消息
• 暂停、恢复操作
查看消息
查看消息
创建消息
转发消息
• 在如下情况下,可以将消息进行转发:• 源Destination是队列或者处于消费暂停状态持久化订阅者的主题
• 目标Destination是队列、主题或者不处于生产暂停状态持久化订阅者的主题
• 消息处于可见(visible)、延迟(delayed)或者排队(ordered)状态
• 源Destination与目标Destination必须在同一个集群中
转发消息
导入/导出消息
• 可以将消息导出到文件,也可以从文件导入消息• XML格式文件导入
• 消息可以导出为XML和串化格式
• 可以将消息导出到文件,也可以从文件导入消息• XML格式文件导入
• 消息可以导出为XML和串化格式
• 导入消息的目标Destination可以是队列或者持久化订阅者的主题
• 目标Destination必须处于生产暂停状态
导入消息
导出消息
导出消息格式
清洗Destination
• 当Destination处于消息堵塞或者需要清理测试中的Destination,可以删除、清除Destination中的消息
• Destination需要处于消费暂停状态
• 消息必须处于可见(visible)、延迟(delayed)或者排队(ordered)状态
• 处理中,Destination将被锁定
清洗Destination
暂停、恢复操作
• 当进行JMS环境Debug时,可以暂停、恢复Destination
• 以下操作可以被暂停、恢复:• 生产消息
• 插入消息
• 消费消息
• 在Server启动、运行时,都可以进行暂停、恢复JMSDestination操作
生产暂停、恢复设置
生产暂停、恢复操作
Agenda
• WebLogic JNDI Overview
• WebLogic JMS
• JMS Overview
• WebLogic JMS Overview
• Configuring WebLogic JMS Server & Resources
• Configuring WebLogic JMS Store
• Configuring and monitoring WebLogic JMS Objects &
Message
• Distributed Destination
• WebLogic JMS Store-and-Forward
• WebLogic Server Unit-of-Order
• WebLogic Server Messaging Bridge
分布式Destination简介
• 分布式Destination是指对客户端透明(逻辑单一)的一组Destination(队列或主题)
• 分布式Destination:• 通过JNDI访问
• 提高持续JMS服务的高可用性
• 在多个Server的不同物理Destination之间进行负载均衡
分布式Destination简介
• 使用分布式Destination的应用具备高可用性
分布式Destination分类
• Uniform distributed destinations
• WebLogic Server在JMS模块目标JMS Server上统一创建JMS
成员
• 所有分布式Destination参数均具一致性
• Weighted distributed destinations
• 分布式Destination成员被用户手动配置
负载均衡
• 负载均衡主要特征:• 使用round robin或者random算法
• 消费者负载均衡在创建时即生效
• 对于分布式队列,所有消息负载到成员队列上
• 对于分布式主题,所有消息复制存在于每个成员主题
• 持久化消息首先负载至配置有JMS store的成员上
• 负载首选客户端本地Server成员或者处于一个事务中的成员
Agenda
• WebLogic JNDI Overview
• WebLogic JMS
• JMS Overview
• WebLogic JMS Overview
• Configuring WebLogic JMS Server & Resources
• Configuring WebLogic JMS Store
• Configuring and monitoring WebLogic JMS Objects &
Message
• Distributed Destination
• WebLogic JMS Store-and-Forward
• WebLogic Server Unit-of-Order
• WebLogic Server Messaging Bridge
SAF优缺点
• 优点:• 实现WebLogic Servers应用间快速可靠的消息传递
• 支持Unit-of-Order方式以保证消息传递次序
• 对应用透明
• 缺点:• 不兼容将消息传递给WebLogic Server以前版本
• 不能与第三方JMS产品互通
SAF组件
SAF消息流
创建SAF代理
创建SAF代理
设置高级参数
• 在创建完SAF代理,可以设置以下参数:• 消息重发次数、消息过期时间等
• 消息配额和阈值参数
• 参数一方面定义了SAF代理消息流控制,另一方面也定义了如何处理过期、毒药消息
配额和阈值
• 配额和阈值包括:• 字节最低、最高阈值
• 消息最低、最高阈值
• 最大字节数
• 最大消息数
• 最大消息内容大小
创建远程SAF上下文
创建远程SAF上下文
创建SAF错误处理资源
创建SAF错误处理资源
创建导入SAF Destination
创建导入SAF Destination
创建SAF队列/主题
创建SAF队列/主题
集群中配置SAF
监控SAF代理
• 对于一个SAF代理,可以监控:• SAF代理统计信息
• SAF消息目标远端节点
监控SAF代理
管理SAF代理
• 管理操作包括:• 暂停、恢复
• 清除
• 处理超时消息等
管理SAF代理
管理SAF代理
Agenda
• WebLogic JNDI Overview
• WebLogic JMS
• JMS Overview
• WebLogic JMS Overview
• Configuring WebLogic JMS Server & Resources
• Configuring WebLogic JMS Store
• Configuring and monitoring WebLogic JMS Objects &
Message
• Distributed Destination
• WebLogic JMS Store-and-Forward
• WebLogic Server Unit-of-Order
• WebLogic Server Messaging Bridge
WebLogic Server Unit-of-Order
• WebLogic Server Unit-of-Order加入并扩展了JMS消息规范排序规则部分
• Unit-of-Order可以使一个或者一组独立的消息生产者将消息组成一个单元
• 这些消息将保证按照创建顺序发送给消费者
• 消息使用名称属性用于标识Unit-of-Order
管理方式设置Unit-of-Order
• Unit-of-Order可以在Connection factory中进行设置;使用使用该连接工厂的消息都将包含Unit-of-Order值
• System-generated和User-generated两种类型
设置Connection Factory属性
编程方式设置Unit-of-Order
• WLMessageProducer接口
Agenda
• WebLogic JNDI Overview
• WebLogic JMS
• JMS Overview
• WebLogic JMS Overview
• Configuring WebLogic JMS Server & Resources
• Configuring WebLogic JMS Store
• Configuring and monitoring WebLogic JMS Objects &
Message
• Distributed Destination
• WebLogic JMS Store-and-Forward
• WebLogic Server Unit-of-Order
• WebLogic Server Messaging Bridge
消息桥
• 消息桥是一种连接不同消息件(JMS)进行消息转发的方式
• WebLogic消息桥可以帮你整合消息应用:• WebLogic不同版本、实现之间
• WebLogic不同域之间
• WebLogic与其他消息件之间
消息桥与存储转发区别
消息桥使用场景
• 以下情况下,在源目的地与目标目的地之间发送消息:• 源目的地为队列
• 源目的地如果为主题,需要保证已允许使用消息桥的持久订阅
• 复制消息队列
消息桥组件图
1. 创建消息桥目的地
2. 创建消息桥实例
3. 生效Connection Factory的XA属性
4. 配置消息桥实例
5. 配置资源适配器Resource Adapter
5. 配置资源适配器Resource Adapter
举例:与JBOSS互联
举例:与MQ互联
练习时间
• Lab1 配置数据源
• Lab2 配置JMS服务器和目标
• Lab3 移动与导入导出消息
• Lab4 管理过期消息