在《OpenMQ集群在GlassFish中的应用---安装篇》中我们完成了OpenMQ集群的建立,接下来介绍一下如何在GlassFish集群中配置和使用OpenMQ集群提供的JMS服务。
首先,按照《GlassFishV2 集群实现》 中的步骤建立一个GlassFish集群环境。
GlassFish集群环境
IP | HostName | 实例 | ClusterID |
192.168.1.101 | das.localdomain | ||
192.168.1.102 | node1.localdomain | instance1 | cluster1 |
192.168.1.104 | node2.localdomain | instance2 | cluster1 |
GlassFish集群建立之初,集群中会存在一个默认的JMS主机(default_JMS_host),进入das.localdomain:4848控制台 点击【配置】->【cluster1-config】->【java消息服务】->【JMS主机】
如图:
也可以通过命令来查看cluster1集群中的JMS主机
[root@das glassfish]# bin/asadmin list-jms-hosts cluster1
default_JMS_host
已成功执行命令 list-jms-hosts。
设置GlassFish集群JMS服务
首先,删除涉及由域管理服务器(das.localdomain)启动的代理的默认 JMS 主机,通过控制台界面点击删除就可以了,也可以通过命令行进行删除。
[root@das glassfish]# bin/asadmin delete-jms-host --target cluster1 default_JMS_host
已成功执行命令 delete-jms-host。
然后在集群中增加我们之前建立的OpenMQ集群中的主机。
【配置】->【cluster1-config】->【java消息服务】->【JMS主机】->【新建】
也可通过命令行进行添加
[root@das glassfish]# bin/asadmin create-jms-host --target cluster1 --mqhost mq1.localdomain --mqport 7676 --mquser admin --mqpassword admin broker1
[root@das glassfish]# bin/asadmin create-jms-host --target cluster1 --mqhost mq2.localdomain --mqport 7676 --mquser admin --mqpassword admin broker2
设置JMS服务类型为REMOTE
【配置】->【cluster1-config】->【java消息服务】
等效的命令行
[root@das bin]# ./asadmin set cluster1.jms-service.type=REMOTE
启动GlassFish集群实例
注意:JMS 类型为 Remote 时,务必始终先启动Open MQ 代理,然后再启动GlassFish实例。否则GlassFish将无法启动。
地址列表行为 是指实例尝试连接JMS主机列表的行为priority表示顺序连接即尝试连接时总是从主机列表第一个主机开始,random表示随机连接即尝试连接时随机连接主机列表中的主机。
当GlassFish集群各个实例启动时会在Open Message Queue主机上打印连接日志,如:
[12/二月/2011:16:39:51 CST] [B1065]: 接受: [email protected]:40013->jms:48539。计数:服务 =1 代理 =1
为GlassFish集群增加JMS资源
1.创建JMS物理目的地
创建一个名为MyQueue目的地类型为queue队列
【集群】->【cluster1】->【物理目的地】点击【新建】
也可通过在域管理服务器(das.localdomain)上通过命令行增加
[root@das bin]# ./asadmin create-jmsdest --desttype queue --target cluster1 MyQueue
JMS主机会输出如下日志:
[12/二月/2011:17:22:26 CST] [B1158]: 管理员已创建目的地 MyQueue [队列]
2.创建 JMS 连接工厂
创建一个名为jms/MyConnectionFactory的连接工厂
【资源】->【JMS资源】->【连接工厂】->【新建】
注意:从页面底部的可用目标列表中选择cluster1群集,然后单击“添加”。
等效的命令行:
[root@das bin]# ./asadmin create-jms-resource --target cluster1 --restype javax.jms.ConnectionFactory jms/MyConnectionFactory
已成功执行命令 create-jms-resource。
3.创建 JMS 目标资源
创建一个名为jms/MyQueue的目标资源
【资源】->【JMS资源】->【目的地资源】->【新建】
注意:从页面底部的可用目标列表中选择cluster1群集,然后单击“添加”。
经过以上操作之后,我们的GlassFish集群就可以使用Open Message Queue集群提供的外部JMS服务了,在下面的文章中会编写一个从目标jms/MyQueue读取消息的消息驱动Ben和一个单独向目标发送消息的客户端,来验证我们的集群工作环境。还会对服务可用性和数据可用性做一些说明。敬请期待