❶ 什么是消息中间件,例如IBM MQ,能否用通俗的语言帮忙解释一下。。
先给你讲一下什么叫中间件再举个例子
1.网络中中间件含义的链接 我就不粘贴了
http://ke..com/view/23710.htm
2.举个简单的例子,
有这样一个需求,sap有一组hr的相关信息,比如姓名,工号等等要求显示到一个portal上面,供user使用 查看信息。
数据怎么从sap到portal呢,可能的一种情况是,使用一个中间件,通过rfc或者idoc把相关信息从sap取出来,整合以后在通过jdbc插入到 portal的后台db里去。
这就是一个中间件参与数据整合 协同的简单过程。这样一个过程是由中间件完成的。所以简单的说,中间件就是在异构系统间起数据传输,整合作用的一个软件。
3.还是以刚才的例子为例,看看什么是消息中间件
如果是消息中间件,就要把刚才例子中的hr数据看成一个消息,具体的数据结构可以根据需要和开发平台自己来定义。
把从rfc出来的数据,先形成一个消息,然后发布到一个消息队列里面,然后再通过一定规则去取这个消息解析再使用jdbc插入数据库
这个过程可以是一对一,以可以是多对多。
也许上面这个简单的例子并不能体现消息中间件的优点,但是在复杂的网络环境下,例如多个通讯方式,多个业务系统之间进行消息交互,他的优点是显而易见的。
❷ MQ是什么怎检查具体说明
MQ
IBM MQ 介绍
消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
IBM WebSphere MQ 产品支持应用程序通过不同组件如处理器、子系统、操作系统以及通信协议的网络彼此进行通信。例如,IBM WebSphere MQ 支持 35 种以上的不同操作系统。
IBM WebSphere MQ 支持两种不同的应用程序编程接口:java 消息服务(JMS)和消息队列接口(MQI)。在 IBM WebSphere MQ 服务器上,JMS 绑定方式被映射到 MQI。如图 3 所示,应用程序直接与其本地队列管理器通过使用 MQI 进行对话,MQI 是一组要求队列管理器提供服务的调用。MQI 的引人之处是它只提供 13 次调用。这意味着对于应用程序编程员它是一种非常易于使用的接口,因为大部分艰苦工作都将透明完成的。
图形 2. IBM WebSphere MQ 编程
图 2 显示了 IBM WebSphere MQ 编程的原理。第一步是让应用程序与队列管理器连接。它通过 MQConnect 调用来进行此连接。下一步使用 MQOpen 调用为输出打开一个队列。然后应用程序使用 MQPut 调用将其数据放到队列上。要接收数据,应用程序调用 MQOpen 调用打开输入队列。应用程序使用 MQGet 调用从队列上接收数据。
图中还显示了消息通道代理(MCA)、通道出口和对象权限管理器(OAM)。MCA 是 IBM WebSphere MQ 程序,它使用现有传输服务诸如 TCP/IP 与 SNA 将消息从本地传输队列移到目标队列管理器。这些传输服务即通道。通道出口是用户写入库,可以在通道运作期间,从已定义位置号之一进入这些库。OAM 是命令和对象管理的缺省授权服务(针对操作系统)。这三个组件对 IBM WebSphere MQ 的现有安全性解决方案非常重要。
❸ ibm主机系统常用命令
那如果说需要配置对应这些常用的命令的话,就可以通过相关设置里面达到对应的一些主题的编辑,一般情况下的话里面有可以通过相关系统里面找到对应的一些命令的编辑状态。
❹ ibmmq svrconn 服务器连接通道 能干什么用
服务器连接通道就是给MQ客户端连接进来的一个标识入口,它和其他通道不一样,它是不需要启动的,如果有MQ客户端成功地通过这个服务器连接通道连接进来,它的状态就是活动的了.
其他的通道类型可能需要执行启动命令来变成活动,这种通道活动以后,有一个真实的通道进程启动起来,服务器连接通道是没有相应的通道进程的.
❺ 如何关闭ibm mq 队列管理器权限认证
1、选中队列管理器名称,鼠标右键菜单-【属性】。
❻ linux系统如何启动mq
开篇之前奉上几条黄金链接:
MQ参考文档
http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0m0/index.jsp?topic=%2Fcom.ibm.mq.doc%2Fhelp_home_wmq.htm
http://www-01.ibm.com/support/docview.wss?uid=swg27006467
MQ下载地址:http://www-03.ibm.com/software/procts/us/en/wmq/
安装的MQ软件包为WMQv600Trial-x86_linux_2.tar.gz. 将WMQv600Trial-x86_linux_2.tar.gz解压至某一目录。
(1)执行接受许可脚本: ./mqlicense.sh –accept 这个脚本是要安装WebSphere MQ 软件包的MQ许可程序. 至关重要,这个脚本没有正确配置的话将导致MQ安装失败.–accept是不启动图形直接接受许可。
(2) 安装 WebSphere MQ for Linux 服务器:
[root@localhost mq]# rpm-ivh MQSeriesRuntime-6.0.0-0.i386.rpm
[root@localhost mq]# rpm-ivh MQSeriesSDK-6.0.0-0.i386.rpm
[root@localhost mq]# rpm-ivh MQSeriesServer-6.0.0-0.i386.rpm
注:安装完成后,相关文件会被自动安装在/opt/mqm下,在安装
MQSeriesRuntime-6.0.0-0.i386.rpm时候,安装程序为系统自动创建了一个mqm用户和mqm组,安装完毕后,需要使用该用户来进行MQ的配置。
(3) 安装 WebSphere MQ for Linux 客户端:
[root@localhost mq]# rpm-ivh MQSeriesClient-6.0.0-0.i386.rpm
(4) 安装 WebSphere MQ 样本程序(其中包括amqsput、amqsget、amqsgbr和amqsbcg等)
[root@localhost mq]# rpm-ivh MQSeriesSamples-6.0.0-0.i386.rpm 样本程序安装在/opt/mqm/samp/bin 中。
(5)安装MQ其他软件包
[root@localhost mq]# rpm-ivh MQSeriesMan-6.0.0-0.i386.rpm
[root@localhost mq]# rpm-ivh MQSeriesJava-6.0.0-0.i386.rpm
[root@localhost mq]# rpm-ivh IBMJava2-SDK-1.4.2-0.0.i386.rpm
上面最后一步安装的是JDK运行环境,如果已经有相同或更高版本的JDK,不需要再安装。 (6) 安装过程创建了一个名为mqm 的用户和一个同样名为mqm 的组,此时,新用户是被锁定的,必须设置一个密码来解锁,这样才能正常使用该用户。用passwd 命令:
[root@localhost mq]# passwd mqm 以上操作均在root用户下操作,至此MQ6.0安装结束。MQ的配置相关命令操作均在mqm用户下。
注意:
如果执行crtmqm命令时提示
-bash-3.2$ crtmqm
-bash: crtmqm: command not found
则需要配置mqm用户的环境变量,编辑如下文件,并添加下面的内容,如下:
第一种方法: 相对第二种较安全 仅对 mqm用户有效
1)-bash-3.2$ vi /var/mqm/.bash_profile
PATH=$PATH:/opt/mqm/samp/bin:/opt/mqm/bin:bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin
2)执行“.”命令,使这个文件生效
-bash-3.2$ . .bash_profile
3)再次尝试实行crtmqm或是dspmqm命令,即可发现已经生效。
第二种方法:
1、su root
2、vim /etc/profile
3、在最后面加上:PATH=$PATH:/opt/mqm/samp/bin:/opt/mqm/bin:bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin
4、关闭远程终端重新打开,无需重启服务器
5、ok了!!
了解更多开源相关,去LUPA社区看看吧。
❼ IBM MQ是什么
IBM MQ
消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
IBM WebSphere MQ 产品支持应用程序通过不同组件如处理器、子系统、操作系统以及通信协议的网络彼此进行通信。例如,IBM WebSphere MQ 支持 35 种以上的不同操作系统。
IBM WebSphere MQ 支持两种不同的应用程序编程接口:Java 消息服务(JMS)和消息队列接口(MQI)。在 IBM WebSphere MQ 服务器上,JMS 绑定方式被映射到 MQI。如图 3 所示,应用程序直接与其本地队列管理器通过使用 MQI 进行对话,MQI 是一组要求队列管理器提供服务的调用。MQI 的引人之处是它只提供 13 次调用。这意味着对于应用程序编程员它是一种非常易于使用的接口,因为大部分艰苦工作都将透明完成的
❽ 使用ibm MQ 在JAVA类中报: NoClassDefFoundError:com/ibm/mq/headers/internal/trace/Names
1.相关jar包:
com.ibm.mq.commonservices.jar
com.ibm.mq.headers.jar
com.ibm.mq.jar
com.ibm.mq.jmqi.jar
connector.jar
junit-4.4.jar
相关jar可以在ibm mq的安装目录下找到:
2.在mq服务器上创建相应的队列管理器,和队列,以及服务器传输通道。附上操作命令:
--启动队列管理器
strmqm QMEMBFE
--启动监听
runmqlsr -m QMEMBFE -p 1414 -t tcp &
--用户交互管理界面程序
runmqsc QMEMBFE
--创建本地队列
DEFINE QLOCAL (Q1)
--创建名称为DC.SVRCONN的服务器连接通道
DEFINE CHANNEL(DC.SVRCONN) CHLTYPE (SVRCONN) REPLACE
--删除通道
DELETE CHANNEL(DC.SVRCONN)
3.使用java编写调用程序:
运行方法:单元测试运行:testMQ
MessageByMQ
[java]view plain
importorg.junit.After;
importorg.junit.Before;
importorg.junit.Test;
importcom.ibm.mq.MQC;
importcom.ibm.mq.MQEnvironment;
importcom.ibm.mq.MQException;
importcom.ibm.mq.MQGetMessageOptions;
importcom.ibm.mq.MQMessage;
importcom.ibm.mq.MQPutMessageOptions;
importcom.ibm.mq.MQQueue;
importcom.ibm.mq.MQQueueManager;
/**
*列出常用的错误码:如下:
*2540:通道定义有错误:</p>
*解决方式如下:</p>
*1.进入用户交互界面:runmqscQMEMBFE(QMEMBFE为队列管理器名称)
*2.创建相应的服务器连接通道:DEFINECHANNEL(DC.SVRCONN)CHLTYPE(SVRCONN)REPLACE
*2035:授权相关错误:解决方式如下:
*进入用户交互界面:(同上):
*ALTERCHANNEL(DC.SVRCONN)CHLTYPE(SVRCONN)MCAUSER('mqm')
*说明:DC.SVRCONN服务器连接通道名称mqm为ibmmq用户名称
*
*
*
*
*@authorkefan
*
*/
publicclassMessageByMQ{
/**
*队列管理器的名称
*/
privateStringqManagerName="QMEMBFE";
/**
*队列管理器
*/
privateMQQueueManagerqMgr;
/**
*队列名称
*/
privateStringqueueName="Q1";
/**
*队列
*/
privateMQQueueqQueue;
/**
*mq服务器所在的主机名称
*/
privateStringhostname="192.168.233.134";
/**
*服务器连接通道名称
*/
privateStringchannelName="DC.SVRCONN";
/**
*监听器监听的端口
*/
privateintport=1414;
/**
*传输的编码类型
*/
privateintCCSID=1381;
@Before
publicvoidinit(){
try{
MQEnvironment.hostname=this.hostname;//安装MQ所在的ipaddress
MQEnvironment.port=this.port;//TCP/IPport
MQEnvironment.channel=this.channelName;
MQEnvironment.CCSID=CCSID;
qMgr=newMQQueueManager(this.qManagerName);
intqOptioin=MQC.MQOO_INPUT_AS_Q_DEF|MQC.MQOO_INQUIRE
|MQC.MQOO_OUTPUT;
qQueue=qMgr.accessQueue(queueName,qOptioin);
}catch(MQExceptione){
e.printStackTrace();
}
}
/**
*发送信息
*/
publicvoidSendMsg(byte[]qByte){
try{
MQMessageqMsg=newMQMessage();
qMsg.write(qByte);
MQPutMessageOptionspmo=newMQPutMessageOptions();
qQueue.put(qMsg,pmo);
System.out.println("Themessageissent!");
System.out.println(" Themessageis"+newString(qByte,"GBK"));
}catch(MQExceptione){
e.printStackTrace();
System.out
.println("AWebSphereMQerroroccurred:Completioncode"
+e.completionCode+"ReasonCodeis"
+e.reasonCode);
}catch(java.io.IOExceptione){
e.printStackTrace();
System.out
.println(""
+e);
}
}
/**
*从消息队列取数据
*/
publicvoidGetMsg(){
try{
MQMessageretrievedMessage=newMQMessage();
MQGetMessageOptionsgmo=newMQGetMessageOptions();
gmo.options+=MQC.MQPMO_SYNCPOINT;
qQueue.get(retrievedMessage,gmo);
intlength=retrievedMessage.getDataLength();
byte[]msg=newbyte[length];
retrievedMessage.readFully(msg);
StringsMsg=newString(msg,"GBK");
System.out.println(sMsg);
}catch(RuntimeExceptione){
e.printStackTrace();
}catch(MQExceptione){
e.printStackTrace();
if(e.reasonCode!=2033)//没有消息
{
e.printStackTrace();
System.out
.println("AWebSphereMQerroroccurred:Completioncode"
+e.completionCode
+"ReasonCodeis"
+e.reasonCode);
}
}catch(java.io.IOExceptione){
System.out
.println(""
+e);
}
}
/**
*单元测试方法
*/
@Test
publicvoidtestMQ(){
MessageByMQmqst=newMessageByMQ();
mqst.init();
try{
mqst.SendMsg("你好,WebshpereMQ7.5!".getBytes("GBK"));
mqst.GetMsg();
}catch(Exceptione){
e.printStackTrace();
}
}
/**
*释放资源
*/
@After
publicvoidrelease(){
try{
qQueue.close();
qMgr.disconnect();
}catch(MQExceptione){
System.out
.println("AWebSphereMQerroroccurred:Completioncode"
+e.completionCode+"ReasonCodeis"
+e.reasonCode);
}
}
}
❾ ibm mq 8.0 怎样打开命令控制台
这个例子的目的是建立可以实现消息传递的一对MQ服务器,它们分别基于NT和UNIX平台。
运行MQ控制台命令
runmqsc QM_NT
运行MQ控制台命令
runmqsc QM_UNIX
❿ mq错误码2030
解决方法:
(1)登录服务器 进入 IBM mq 所在目录 (linux一般在/opt/mqm下),再进入bin目录 切换到mqm用户(su mqm),输入runmqsc QM1 (QM1 是你的队列管理器的名字),进入命令模式,输入 dis qmgr 查看 资源管理器的属性CHLAUTH默认值是ENABLED的改成DISABLED的 输入命令 ALTER QMGR CHLAUTH(DISABLED) ,然后测试是否可用,如果还不可以请看第二步。
(2)
输入 ALTER CHL(SYSTEM.DEF.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('mqm')
SYSTEM.DEF.SVRCONN 是通道的名字
SVRCONN 是通道的类型
mqm 是mq的用户
一般linux安装完mq后 都会自动出现mqm用户。
如果你是使用 IBM WebSphere MQ Explorer 进行设置创建的队列管理器,那么你需要修改队列管理器的属性-->通信-->通道认证记录改为禁用(默认是启用的)。