您的位置:首页 > 运维架构

使用WebSphere MQ最佳实践 TOP 15

2008-10-14 10:05 211 查看
许多文章和书籍提供了有关设计消息队列并将其集成到应用程序中的很好建议。本文通过列举有关使用 WebSphere MQ 来实现消息队列的
15 大(或得到如此广泛认可的)最佳实践,从而简化了这个迷宫般的问题。本文描述有关设计、构建、运行和维护 WebSphere MQ
解决方案的最常见最佳实践,以便实现 WebSphere MQ 的全部好处。
引言

IBM® WebSphere® MQ(以下称为 MQ)是 IBM 的面向消息的中间件产品。它支持异构系统上的独立和可能非并发的应用程序彼此通信。MQ 在
80 多个不同的平台和环境中受到支持。
MQ
的优点之一是对于多样性的客户环境和数据传输需要,它能够变得高度可配置和可自定义。然而,这个优点可能使配置糟糕的系统泛滥成灾,这样的系统不支持将来的扩展、不断变化的开发标准和协议,以及可靠的安全性。本文描述有关设计、构建、运行和维护
MQ 解决方案的最常见最佳实践,以便实现 MQ
的全部好处。务必记住,并非所有的建议都适合于所有情形,并且这些建议是作为指导原则而不是作为硬性规则来提供的。大型的复杂企业可能通常有背离这些建议的充分理由。本文是基于
MQ V6 编写的,并假设您具备 MQ 的基础知识。
MQ
使得应用程序设计人员能够构造长期有效的体系结构。其通用性、灵活性以及广泛的实现和环境,使得描述能涵盖所有情况的过程非常困难。本最佳实践列表应该使架构师、系统管理员和应用程序开发人员能够避免常见的错误,并在他们的解决方案中最优地利用
MQ。该列表是按照解决方案的设计、构建、运行和维护这四个阶段来进行组织的。

设计

对队列管理器和 MQ 对象使用短名称

有时,仅只是给队列命名也会充满挑战。在其他情况下,您已经创建了如此多的队列和其他对象,以致您的命名约定不再有效,或者没有您预期的那样具有描述性。一般来讲,除了通道名称不能超过
20 个字符以外,MQ 对象的名称最多可以有 48 个字符。您可以使用大写和小写的字母 A-Z、数字 0-9、下划线 (_)、句点 (.)
和两个特殊字符:正斜杠 (/) 和百分号 (%)。如果使用了两个特殊字符中的任何一个,则必须将名称包括在双引号中。

除了一般规则以外,下面是一些建议用于对队列管理器和 MQ 对象命名的指导原则:

对所有对象全部使用大写,包括队列管理器,以防止在异构环境中出现可移植性问题。

队列管理器名称在 MQ 网络中应该是唯一的,并反映队列管理器的位置、功能和环境(dev、test
等)。通道名称应该反映它们的功能和源/目标队列管理器连接流;对所有发送方和接收方通道使用
FROMQUEUEMANAGERNAME.TOQUEUEMANAGERNAME,对所有集群通道使用
TO.QUEUEMANAGERNAME。如果有多个通道连接到同一个管理器,可以在名称中使用不同的优先级或协议来扩展该约定,但是要保持在 20
个字符以内。另一个常见的最佳实践是使用 SOURCEQUEUEMANAGERNAME.TO.DESTQUEUEMANAGERNAME。

将队列管理器名称保持简短,不要超过 8 个字符。

队列的名称中不应该具有单词 QUEUE(因为它做出了暗示),也不应该在名称中具有拓扑(本地、远程、别名等等)。

应用程序应该具有高级限定符,其中包含几个字符,后面跟着某个分隔符(例如句点),以便于对名称排序并明确队列的用途(例如
APPXYZ.SERVICE1.REQUEST)。

不要在任何 MQ 对象的名称中使用空格,包括系统主机名称。

对于 MQ 授权,尽管组名称和用户 ID 的最大长度是 20 个字符,还是要将名称保持在 12 个字符以下以防止复杂化。

尽管允许使用特殊字符正斜杠 (/) 和百分号 (%),但是应该避免使用它们,因为它们会导致跨平台难题。

始终为队列管理器分配死信队列(dead letter
queue,DLQ)

DLQ
是一个本地队列,也称为未送达消息队列。为每个队列管理器创建和分配一个死信队列,并使用它来捕获由于网络或目的地问题而未发送的消息,这是一个很好的实践。如果不定义
DLQ,应用程序中的错误可能导致通道关闭。如果发生这种情况,不仅队列将停止

http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0807_hsieh/0807_hsieh.html?S_TACT=105AGX52&S_CMP=tec-csdn
本文转自IBM Developerworks中国

请点击此处查看全文
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: