WAS 6与Websphere MQ6的整合

WAS 6与Websphere MQ6的整合

整合 的目的是让MQ作为websphere application server的JMS provider,所有的JMS消息会被was转发到MQ队列 中,由于MQ提供了多种平台的API,因此消息的传递可以不再通过转发的方式。任何平台都可以直接连接到MQ获取/发送消息,减少了跨平台消息传递中的不 确定因素。

首先在MQ中建立队列管理器、消息队列、服务器连接通道(SYSTEM.DEF.SVRCONN类型的通道)。由于 was将通过CLIENT模式与MQ通信,所以有身份认证的问题,需要在信道上配置MAC用户标识,它的值应该是运行MQ的操作系统的一个用户名称,该用 户应该具有管理员权限,推荐使用启动MQ的用户名称。如果不配置该MAC用户标识,那么运行was的机器必须建立一个与运行MQ完全相同的用户/密码来启 动was,才能提供正确的身份信息。如果采用BINDINF的传输模式,就不需要任何的认证信息,但是该模式只能适用于was和MQ在同一台机器上的情 况。而且一个was环境中,只能允许一个连接工厂使用BINDING模式连接,所以不推荐该模式。
假设建立起来的队列管理器为 sobeymam,ccsid为1208(Unicode)或者1381(GB2312),通信端口为1414;建立的消息队列为test,ccsid为 1208(Unicode);服务器连接信道为s1,MAC用户标识为bromon。

下一步是在WAS中建立队列连接工厂,“资源”—-“JMS提供者”—-“Websphere MQ”—-“Websphere MQ队列连接工厂”—-“新建”。填写以下内容:

名称:                        cf
JNDI名称:                    jms/cf
队列管理器:                mam
主机:                        运行MQ的机器名或IP
端口:                        1414(与队列管理器的侦听端口对应)
通道:                        s1(与队列管理器的服务器连接通道对应)
传输类型:                    CLIENT
取消“已起用XA”选项

连接工厂的配置完成。

下一步是建立队列目标。“资源”—-“JMS提供者”—-“Websphere MQ”—-“Websphere MQ队列目标”—-“新建”。填写以下内容:

名称:                        test
JNDI名称:                    jms/test
基本队列名:                test(对应MQ中的本地队列)
CCSID:                        1208
目标客户机:                MQ

队列目标的配置完成。需要说明的是,目标客户机的值决定了JMS的消息将以什么格式存放在MQ中。如果是”MQ”,那么消息将直接使用MQSTR格式,纯 文本的存放,任何平台都能够获取消息直接显示。如果是”JMS”,那么消息将使用MSHRF2格式存放,java平台能够不加处理的正常识别,其他平台必 须要做转换才能正确获得消息文本。推荐使用”MQ”。

如果需要部署消息BEAN获取MQ中的消息,那么还需要配置侦听器端口,“服务器”—-“应用服务器”—-“server1”—-“通信”—-“消息传递”—-“消息侦听器服务”—-“侦听器端口”—-“新建”。填写一下内容:

名称:                            test
连接工厂JNDI名:                jms/cf(对应websphere队列连接工厂的JNDI)
目标JNDI名:                    jms/test(对应websphere队列目标的JNDI)

侦听器端口配置完成,部署消息bean时需提供该侦听器名称。

重启websphere使配置生效。

编写一个jsp尝试发送消息:

  1. <%@ page contentType=”text/html; charset=GBK”%>
  2. <%@ page import=”java.util.*”%>
  3. <%@ page import=”javax.jms.*”%>
  4. <%@ page import=”javax.naming.*”%>
  5. <%
  6. try
  7. {
  8. Properties p = new Properties();
  9. put(Context.INITIAL_CONTEXT_FACTORY,”com.ibm.websphere.naming.WsnInitialContextFactory”);
  10. put(Context.URL_PKG_PREFIXES, “com.ibm.ws.naming”);
  11. put(Context.PROVIDER_URL, “iiop://localhost:2809/”);
  12. InitialContext ctx = new InitialContext(p);
  13. QueueConnectionFactory qcf = (QueueConnectionFactory) ctx.lookup(“jms/cf”);//连接工厂
  14. QueueConnection conn = qcf.createQueueConnection();
  15. Queue q = (Queue) ctx.lookup(“jms/test”);//队列
  16. QueueSession s = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
  17. start();
  18. QueueSender sender = s.createSender(q);
  19. TextMessage tm=s.createTextMessage(“测试websphere mq有中文字符”);//创建文本消息
  20. send(tm, DeliveryMode.PERSISTENT, 4, 0);
  21. close();
  22. }catch(Exceptione)
  23. {
  24. println(e);
  25. }
  26. %>

 

SuseLinux11SP3-MQ7-Cluster 集群环境 虚拟机下载

本博主配置好的SuseLinux11SP3-MQ7-Cluster 集群环境虚拟机文件,链接:https://pan.baidu.com/s/1GbfFJHCsKFfeMFHOUMA5ZQ
提取码:47wi  下载后,用VMWARE WORKSTATION打开,即可以使用。

SUSE Linux,针对个人用户。2005年10月6日推出的SUSE Linux有三个版本 - “OSS版” (完全地开放原始码)、”试用版”(同时包含开放原始码的程序及专属程序如Adobe Reader、Real Player等,其实就是盒装零售版,也可以免费下载,可以安装在硬盘上,并且没有使用限制或限期,但不含说明手册及Novell提供的技术支援)及盒装零售版。
Novell公司改进SUSE Linux,创建了一些企业用或高级桌面应用的Linux版本,主要产品版本有
SUSE Linux Enterprise Server (SLES) 最新版本SUSE Linux Enterprise 12
SUSE Linux Enterprise Desktop(SLED)
SUSE Manager (版本号1.7)
SUSE Studio等等。
SUSE 让管理员方便管理Linux服务器
Linux是一个开放源码的系统,所有的Linux系统都要遵循GPL规则。所以在Linux系统里面,软件分发的程序都大同小异,那么SUSE到底有什么特殊的地方?(SUSE的Yast是以RPM为基础的操作系统安装与设置工具,也是SUSE Linux发行版的主要特性之一)
SUSE集成管理界面不仅仅是软件,SUSE可以使管理员不需要对组件进行深入研究而进行配置,SUSE可以配置管理需要或者不需要的所有组件。
RedHat Linux竞争的关键是提供可靠的开源软件,但这并不一定意味着SUSE软件容易使用。SUSE尝试根据管理员的所需提供很好的工具,但在RedHat Linux7,几乎所有的SUSE老工具都是让管理员使用命令行去操作。
在SUSE LinuxEnterprise Server里却不是这样。SUSE依赖于另一个安装工具,SUSE在系统的每一个版本更新中都有做改进,通过在SUSE的现状可以看出。
SUSE有一个综合管理程序控制面板,这很重要。管理员可以方便的通过SUSE的综合管理工具面板来获得新的软件。
SUSE的使用案例是与混合服务器操作系统的环境,那里的管理员管理系统只有一个肤浅的认识:UNIX和Linux编程。
SUSE Linux的YaST可以和命令行交叉工作,SUSE之间可以互补,所以习惯用SUSE编程命令行来管理服务器也可以达到相应的效果。
在SUSE早期版本,SUSE会损坏一些手动创建的配置。Linux的早期管理员都有过这种经历:SUSE损坏了管理大量手工创建的配置。然而,SUSE的配置改变现在已经有完善的告警机制,管理员们可以放心的使用SUSE。
在新近的SUSE版本里,SUSE会自动备份配置文件和显示手动修改过的配置,SUSE这样的机制可以保证最大化的配置丢失风险.

IBM WebSphere MQ (Message Queue) 是目前应用最多的消息中间件产品,它简化了应用程序之间的数据传输,提供了统一的通信标准,确保分布式网络环境下可靠的、跨平台的信息传输和数据交换。应 用程序只需要将消息发送给 MQ,由 MQ 负责将消息安全可靠地发送出去。
Websphere MQ 支持集群功能。多个队列管理器可以分布在不同的机器上。集群功能简化了系统配置,不需要在每个队列管理器上创建消息通道、远程队列定义和传输队列。使用集群技术可以提高系统的可用性和实现负载均衡。

MQ 集群概述

本博主配置好的SuseLinux11SP3-MQ7-Cluster 集群环境虚拟机文件,链接:https://pan.baidu.com/s/1GbfFJHCsKFfeMFHOUMA5ZQ
提取码:47wi  下载后,用VMWARE WORKSTATION打开,即可以使用。

对于 MQ 两个队列管理器之间的通信,需要创建相应的对象。在发送队列管理器上,要创建一个远程队列,这个远程队列指向远程的目的地队列。还要创建一个传输队列做为 存储转发队列以及一个发送通道指向接收队列管理器。在接收队列管理器上,要创建一个本地队列和一个接收通道。如果一个网络中有多个队列管理器,并且两两之 间要实现通信时,需要创建多个远程队列、传输队列和发送通道。
为了简化点对点通信的系统配置,通过 MQ 提供的群集功能,减少了集群中队列管理器上的 MQ 对象数量。群集内的两个队列管理器之间的通信,不需要两两间建立消息通道,而是使用群集通道与其它成员通信。只需要在每个队列管理器上创建两个集群通道。 一个集群接收通道用来从集群中的其他队列管理器接收消息。一个集群发送通道用来发送消息。
集群的仓储库中含有集群的信息,如队列管理器的位置,通道等信息。仓储库分为完整仓储库队列管理器和部分仓储库队列管理器。完整仓储库队列管理器有集群中 所有队列管理器的信息。而部分仓储库队列管理器中只有自身的和它要通信的队列管理器的信息。部分队列管理器通过与完整队列管理器通信,查询到相关的集群信 息。
集群中共享的队列叫做集群队列。集群中的其他队列管理器可以向集群队列发送消息而不需要创建对应的远程队列定义。通常会在集群中创建多个同名的集群队列实 例,分布在不同队列管理器上。当消息发送到集群队列时,MQ 会通过负载平衡算法,决定消息实际发送到哪里队列管理器的队列上。

创建 MQ 集群环境

创建一个简单的 MQ 集群一般需要两个完整仓储库队列管理器和两个部分仓储库队列管理器。其中两个完整仓储库队列管理器相互形成备份。本文示例中包括,两个完整仓储库队列管理器和两个部分仓储库队列管理器,以及在两个部分仓储库队列管理器上各创建一个集群队列。

本博主配置好的SuseLinux11SP3-MQ7-Cluster 集群环境虚拟机文件,链接:https://pan.baidu.com/s/1GbfFJHCsKFfeMFHOUMA5ZQ
提取码:47wi  下载后,用VMWARE WORKSTATION打开,即可以使用。