04.wls jndi jms

127
WebLogic Server JMS 综述 孟和 渠道售前咨询顾问

Upload: meng-he

Post on 29-Nov-2014

672 views

Category:

Documents


0 download

DESCRIPTION

WebLogic 的JNDI和JMS配置

TRANSCRIPT

Page 1: 04.wls jndi jms

WebLogic Server JMS 综述

孟和渠道售前咨询顾问

Page 2: 04.wls jndi jms

以下内容旨在概述产品的总体发展方向。此信息仅供参考,不可纳入任何合同。此信息不承诺提供任何资料、代码或功能,并且不应该作为制定购买决策的依据。此处所述有关 Oracle 产品的任何特性或功能的开发、发布以及相应的日程安排均由Oracle 自行决定。

Page 3: 04.wls jndi 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

Page 4: 04.wls jndi 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

Page 5: 04.wls jndi jms

什么是JNDI?

• JNDI(Java Naming and Directory Interface)一组在Java应用中统一访问命名和目录服务的API

• JNDI解决的主要问题:• 使用通用接口来访问不同种类的服务

• 可以同时连接到多个命名或目录服务上

• 建立起逻辑关联,允许把名称同Java对象或资源关联起来,而不必知道对象或资源的物理ID

• 满足企业级APIs对命名与服务的访问,诸如EJBs、JMS、JDBC 2.0以及IIOP上的RMI通过JNDI来使用CORBA的命名服务。

Page 6: 04.wls jndi jms

为什么使用JNDI

• 在Oracle WebLogic Server,JNDI起到Java EE对象仓库和查找服务的作用,包括:• EJB home stubs

• JDBC DataSources

• JMS connection factories, queues and topics

• RMI stubs

Page 7: 04.wls jndi jms

JNDI结构

Page 8: 04.wls jndi jms

命名服务

• 命名服务提供了一种为对象命名的机制,这样你就可以在无需知道对象位置的情况下获取和使用对象。

• 命名服务术语:

Page 9: 04.wls jndi jms

JNDI树

Page 10: 04.wls jndi jms

Context和Subcontext

• Subcontext通过“.”来表示

• 在放置对象之前,必须先创建Subcontext

• 通常,将对象绑定到JNDI树的同时会自动创建JNDI名指定的Subcontext

Page 11: 04.wls jndi jms

管理员需要了解的JNDI

• 为了更加方便进行系统管理工作,系统管理员需要懂得JNDI

• 检查对象是否已经绑定到JNDI树

• 在JNDI树上对Context进行安全设置

Page 12: 04.wls jndi jms

查看JNDI树

Page 13: 04.wls jndi 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

Page 14: 04.wls jndi jms

JMS架构

• JMS – Java Message Service

Page 15: 04.wls jndi jms

JMS架构:连接

Page 16: 04.wls jndi jms

JMS架构:发送消息

Page 17: 04.wls jndi jms

消息模式

• 点对点模式(P2P):• 消息按照线性顺序存储于队列中

• 一个消息仅传递给一个接收者

• 发布/订阅模式(Pub/Sub):• 消息存储在主题中

• 消息传递给主题所有订阅者

Page 18: 04.wls jndi jms

JMS与事务

• JMS客户端可以同JTA参与到一个分布式事务中

• 相对的, JMS客户端只在JMS会话中确保事务完整性

• 参与事务是可选的

Page 19: 04.wls jndi jms

点对点消息模型

Page 20: 04.wls jndi jms

发布/订阅消息模型

Page 21: 04.wls jndi 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

Page 22: 04.wls jndi jms

WebLogic JMS实现

• WebLogic JMS是集成在WebLogic Server中的企业级消息系统。

• 具有如下突出优势:• 极大提高的性能

• 消息存储持久化

• 分布式Destination

• Unit of Order

• 自动的透明客户端重连接

• 存储转发SAF

Page 23: 04.wls jndi jms

WebLogic JMS管理

• WebLogic JMS管理主要有两种方式:• 管理控制台

• 适合于一次创建单个资源、管理少量消息资源

• WLST

• 适合通过脚本批量创建、管理多个资源;脚本可以方便地实现自动化以及在环境间转换

Page 24: 04.wls jndi jms

管理控制台

Page 25: 04.wls jndi jms

WLST管理

Page 26: 04.wls jndi jms

WLST管理

Page 27: 04.wls jndi jms

WebLogic JMS架构

Page 28: 04.wls jndi 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

Page 29: 04.wls jndi jms

WLS JMS Server

• 在WLS中,消息服务由JMS Server实现

• JMS实现对消息的接收和发送

Page 30: 04.wls jndi jms

创建JMS Server

Page 31: 04.wls jndi jms

为JMS Server设置目标服务器

Page 32: 04.wls jndi jms

配置JMS Server

Page 33: 04.wls jndi jms

JMS资源

• JMS资源可以作为系统组件也可以作为应用组件

Page 34: 04.wls jndi jms

JMS资源组件的配置与部署

• WebLogic Server中的JMS配置存储在JMS组件中• 配置规范需要遵从weblogicjmsmd.xsd

• 类似标准的J2EE组件

• 管理员可以创建和维护的JMS组件• 全局系统资源

• 全局standalone组件

• 企业应用组件

Page 35: 04.wls jndi jms

JMS资源组件的配置与部署(续)

• 组件化的配置带来简便的迁移性,例如:• 从开发环境到集成测试环境

• 从测试环境到生产环境

• 进行应用迁移时,关于JMS配置:• 不需要打开EAR文件进行修改

• 不需要太多的手动JMS重新配置

Page 36: 04.wls jndi 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

Page 37: 04.wls jndi jms

创建连接工厂

Page 38: 04.wls jndi jms

配置连接工厂

Page 39: 04.wls jndi jms

Destination

• Destination是存储在JNDI中的轻量级对

• 是JMS server上发送或接收消息的目标

• JMS destination类型有:• Queue

• Topic

Page 40: 04.wls jndi jms

Queue Destinations

• JMS的点对点消息模式:• 客户端与一个queue destination通信

• 消息以串行(先进先出)方式被发送到消息接收方

• 每个消息只被发送到一个消息接收者

Page 41: 04.wls jndi jms

Topic Destinations

• JMS的发布、订阅模式:• 客户端与一个topic destination通信

• 消息被广播给所以的订阅者

• 消息被保存,直到最少有一个订阅者接收到

Page 42: 04.wls jndi jms

创建Destination

Page 43: 04.wls jndi jms

创建Destination (续)

Page 44: 04.wls jndi jms

创建Queue Destination

Page 45: 04.wls jndi jms

创建Queue Destination(续)

Page 46: 04.wls jndi jms

Threshold 和 Quota

• JMS Server和Destination对象可以设置threshold和quota值

• quota是针对JMS管理对象定义的限制,包括如下值:• 可存储的最大字节数

• 可存储的最大消息数

• threshold是触发message paging、flow control和logged warnings的限制值,包括:• 字节数的上限和下限

• 消息数的上限和下限

Page 47: 04.wls jndi jms

配置Thresholds和Quotas

Page 48: 04.wls jndi 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

Page 49: 04.wls jndi jms

持久化订阅

• 持久化订阅可以确保即使消息接收者有时处于离线状态,也能正确的接收到消息

• 消息订阅者是否在线是根据其Java对象是否存在来判断的

• 缺省的,消息订阅者不是持久化的

• 管理员可以配置:• 消息需要持久化到哪里

• 持久化连接工厂和destination

Page 50: 04.wls jndi jms

需要使用持久化消息的场景

• 持久化消息确保内存中的消息被写到持久存储

• 有如下场景可以配置持久化消息:• 应用开发需要用到持久化订阅

• 需要确保服务器重启不丢失消息

Page 51: 04.wls jndi jms

持久化订阅工作机制

• 如果消息订阅客户端是活动状态的,消息会正常发布

• 如果消息订阅客户端是离线的,当其再次处于活动状态时,使用其ID来重新获取和发布消息

Page 52: 04.wls jndi jms

配置持久化订阅

• 在配置持久化订阅时,管理员需要:• 创建和配置JMS store

• 配置持久化的连接工厂和destinations

• 关联JMS store与JMS server

• 可以配置JMS store使用:• file store

• JDBC store (连接池)

Page 53: 04.wls jndi jms

消息持久化

• WLS通过持久化Store提供有质量保障的消息机制:• 即使服务器重启,消息也会正常收发

• 即使与服务器连接断开、重连,Topic订阅者客户也可以恢复丢失的消息

• 可以用下面的JMS Persistent Stores:• File system

• JDBC (需要一个已经存在的Data Source)

Page 54: 04.wls jndi jms

创建JMS Store

Page 55: 04.wls jndi jms

创建JMS JDBC Store

• 配置JMS JDBC持久化存储包括:• 创建JDBC DataSource.

• 创建JMS store 并且引用JDBC DataSource.

• 在JMS server的配置中JMS store

• 所需要的资源(包括数据库表等)会自动被创建

Page 56: 04.wls jndi jms

创建JMS JDBC Store

Page 57: 04.wls jndi jms

将Store指定到JMS Server

Page 58: 04.wls jndi jms

持久化连接工厂

Page 59: 04.wls jndi jms

配置持久化Destination

Page 60: 04.wls jndi 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

Page 61: 04.wls jndi jms

JMS对象的统计

• WLS提供针对如下JMS对象的统计:• JMS servers

• Connections

• Destinations

Page 62: 04.wls jndi jms

监控JMS Server

Page 63: 04.wls jndi jms

监控和管理Destination

Page 64: 04.wls jndi jms

JMS消息管理

• 当消息在队列、主题中处理时,有时候需要手动管理消息:

• 举个例子,遇到某个队列中消息处理堵塞,你需要将消息传递到不同的队列以使其他消息消费者处理

• WebLogic提供了非常强大的消息管理工具

• 消息管理也支持管理控制台、WLST方式

Page 65: 04.wls jndi jms

WebLogic JMS消息管理特征

• WebLogicJMS消息管理可以方便的:• 查看消息

• 创建消息

• 转移消息

• 从文件导入消息

• 导出消息

• 删除消息

• 清除队列中消息

• 暂停、恢复操作

Page 66: 04.wls jndi jms

查看消息

Page 67: 04.wls jndi jms

查看消息

Page 68: 04.wls jndi jms

创建消息

Page 69: 04.wls jndi jms

转发消息

• 在如下情况下,可以将消息进行转发:• 源Destination是队列或者处于消费暂停状态持久化订阅者的主题

• 目标Destination是队列、主题或者不处于生产暂停状态持久化订阅者的主题

• 消息处于可见(visible)、延迟(delayed)或者排队(ordered)状态

• 源Destination与目标Destination必须在同一个集群中

Page 70: 04.wls jndi jms

转发消息

Page 71: 04.wls jndi jms

导入/导出消息

• 可以将消息导出到文件,也可以从文件导入消息• XML格式文件导入

• 消息可以导出为XML和串化格式

• 可以将消息导出到文件,也可以从文件导入消息• XML格式文件导入

• 消息可以导出为XML和串化格式

• 导入消息的目标Destination可以是队列或者持久化订阅者的主题

• 目标Destination必须处于生产暂停状态

Page 72: 04.wls jndi jms

导入消息

Page 73: 04.wls jndi jms

导出消息

Page 74: 04.wls jndi jms

导出消息格式

Page 75: 04.wls jndi jms

清洗Destination

• 当Destination处于消息堵塞或者需要清理测试中的Destination,可以删除、清除Destination中的消息

• Destination需要处于消费暂停状态

• 消息必须处于可见(visible)、延迟(delayed)或者排队(ordered)状态

• 处理中,Destination将被锁定

Page 76: 04.wls jndi jms

清洗Destination

Page 77: 04.wls jndi jms

暂停、恢复操作

• 当进行JMS环境Debug时,可以暂停、恢复Destination

• 以下操作可以被暂停、恢复:• 生产消息

• 插入消息

• 消费消息

• 在Server启动、运行时,都可以进行暂停、恢复JMSDestination操作

Page 78: 04.wls jndi jms

生产暂停、恢复设置

Page 79: 04.wls jndi jms

生产暂停、恢复操作

Page 80: 04.wls jndi 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

Page 81: 04.wls jndi jms

分布式Destination简介

• 分布式Destination是指对客户端透明(逻辑单一)的一组Destination(队列或主题)

• 分布式Destination:• 通过JNDI访问

• 提高持续JMS服务的高可用性

• 在多个Server的不同物理Destination之间进行负载均衡

Page 82: 04.wls jndi jms

分布式Destination简介

• 使用分布式Destination的应用具备高可用性

Page 83: 04.wls jndi jms

分布式Destination分类

• Uniform distributed destinations

• WebLogic Server在JMS模块目标JMS Server上统一创建JMS

成员

• 所有分布式Destination参数均具一致性

• Weighted distributed destinations

• 分布式Destination成员被用户手动配置

Page 84: 04.wls jndi jms

负载均衡

• 负载均衡主要特征:• 使用round robin或者random算法

• 消费者负载均衡在创建时即生效

• 对于分布式队列,所有消息负载到成员队列上

• 对于分布式主题,所有消息复制存在于每个成员主题

• 持久化消息首先负载至配置有JMS store的成员上

• 负载首选客户端本地Server成员或者处于一个事务中的成员

Page 85: 04.wls jndi 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

Page 86: 04.wls jndi jms

SAF优缺点

• 优点:• 实现WebLogic Servers应用间快速可靠的消息传递

• 支持Unit-of-Order方式以保证消息传递次序

• 对应用透明

• 缺点:• 不兼容将消息传递给WebLogic Server以前版本

• 不能与第三方JMS产品互通

Page 87: 04.wls jndi jms

SAF组件

Page 88: 04.wls jndi jms

SAF消息流

Page 89: 04.wls jndi jms

创建SAF代理

Page 90: 04.wls jndi jms

创建SAF代理

Page 91: 04.wls jndi jms

设置高级参数

• 在创建完SAF代理,可以设置以下参数:• 消息重发次数、消息过期时间等

• 消息配额和阈值参数

• 参数一方面定义了SAF代理消息流控制,另一方面也定义了如何处理过期、毒药消息

Page 92: 04.wls jndi jms

配额和阈值

• 配额和阈值包括:• 字节最低、最高阈值

• 消息最低、最高阈值

• 最大字节数

• 最大消息数

• 最大消息内容大小

Page 93: 04.wls jndi jms

创建远程SAF上下文

Page 94: 04.wls jndi jms

创建远程SAF上下文

Page 95: 04.wls jndi jms

创建SAF错误处理资源

Page 96: 04.wls jndi jms

创建SAF错误处理资源

Page 97: 04.wls jndi jms

创建导入SAF Destination

Page 98: 04.wls jndi jms

创建导入SAF Destination

Page 99: 04.wls jndi jms

创建SAF队列/主题

Page 100: 04.wls jndi jms

创建SAF队列/主题

Page 101: 04.wls jndi jms

集群中配置SAF

Page 102: 04.wls jndi jms

监控SAF代理

• 对于一个SAF代理,可以监控:• SAF代理统计信息

• SAF消息目标远端节点

Page 103: 04.wls jndi jms

监控SAF代理

Page 104: 04.wls jndi jms

管理SAF代理

• 管理操作包括:• 暂停、恢复

• 清除

• 处理超时消息等

Page 105: 04.wls jndi jms

管理SAF代理

Page 106: 04.wls jndi jms

管理SAF代理

Page 107: 04.wls jndi 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

Page 108: 04.wls jndi jms

WebLogic Server Unit-of-Order

• WebLogic Server Unit-of-Order加入并扩展了JMS消息规范排序规则部分

• Unit-of-Order可以使一个或者一组独立的消息生产者将消息组成一个单元

• 这些消息将保证按照创建顺序发送给消费者

• 消息使用名称属性用于标识Unit-of-Order

Page 109: 04.wls jndi jms

管理方式设置Unit-of-Order

• Unit-of-Order可以在Connection factory中进行设置;使用使用该连接工厂的消息都将包含Unit-of-Order值

• System-generated和User-generated两种类型

Page 110: 04.wls jndi jms

设置Connection Factory属性

Page 111: 04.wls jndi jms

编程方式设置Unit-of-Order

• WLMessageProducer接口

Page 112: 04.wls jndi 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

Page 113: 04.wls jndi jms

消息桥

• 消息桥是一种连接不同消息件(JMS)进行消息转发的方式

• WebLogic消息桥可以帮你整合消息应用:• WebLogic不同版本、实现之间

• WebLogic不同域之间

• WebLogic与其他消息件之间

Page 114: 04.wls jndi jms

消息桥与存储转发区别

Page 115: 04.wls jndi jms

消息桥使用场景

• 以下情况下,在源目的地与目标目的地之间发送消息:• 源目的地为队列

• 源目的地如果为主题,需要保证已允许使用消息桥的持久订阅

• 复制消息队列

Page 116: 04.wls jndi jms

消息桥组件图

Page 117: 04.wls jndi jms

1. 创建消息桥目的地

Page 118: 04.wls jndi jms

2. 创建消息桥实例

Page 119: 04.wls jndi jms

3. 生效Connection Factory的XA属性

Page 120: 04.wls jndi jms

4. 配置消息桥实例

Page 121: 04.wls jndi jms

5. 配置资源适配器Resource Adapter

Page 122: 04.wls jndi jms

5. 配置资源适配器Resource Adapter

Page 123: 04.wls jndi jms

举例:与JBOSS互联

Page 124: 04.wls jndi jms

举例:与MQ互联

Page 125: 04.wls jndi jms

练习时间

• Lab1 配置数据源

• Lab2 配置JMS服务器和目标

• Lab3 移动与导入导出消息

• Lab4 管理过期消息

Page 126: 04.wls jndi jms
Page 127: 04.wls jndi jms