本文目录
- ibmmq 一个队列可以创建多少个通道
- 如何在Wildfly上搭建Ibm mq的消息队列
- 如何在 JBoss 里配置 IBM MQ
- 如何正确设置IBM WebSphere MQ 实现群发消息
- ibm mq 8.0 怎样打开命令控制台
- 如何用SSL 和IBM MQ 建立连接
- 使用ibm MQ 在JAVA类中报: NoClassDefFoundError:com/ibm/mq/headers/internal/trace/Names
- IBM MQ是什么
- java 怎么样调用IBM MQ 或者通信问题
ibmmq 一个队列可以创建多少个通道
在第一台计算机上创建的消息被传递到第二台计算机上的队列Q1(此队列被称为远程队列)。要点:在本教程中,您将使用创建了队列管理器QM_APPLE和本地队列Q1的机器作为接收机器。您将在发送机器上设置队列管理器和队列(远程队列定义和传输队列)。然后定义消息通道。最后,您将把测试消息放入发送机器,并从接收机器上的队列获取该消息。
如何在Wildfly上搭建Ibm mq的消息队列
消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
如何在 JBoss 里配置 IBM MQ
安装WebSphere MQ资源适配器: 从安装目录复制wmq.jmsra.rar文件到服务器的部署目录中,例如:《安装路径》/server/default/deploy。此时资源适配器将会自动选择服务器。
安装WebSphere MQ扩展事务客户端: WebSphere MQ扩展事务客户端允许你使用XA分布式事务,并用客户端模式连接到WebSphere MQ队列管理器。要将客户端安装在JBoss,需要从安装目录复制com.ibm.mqetclient.jar文件到服务器的lib目录中,例如《安装路径》/server/default/lib。
为你的应用程序配置资源适配器: WebSphere MQ资源适配器允许你定义一些全局的属性。在JBoss中JCA出站流的资源定义在-ds.xml文件,名为wmq.jmsra-ds.xml。此文件的概要如下:
《?xml version=“1.0“ encoding=“UTF-8“?》《connection-factories》《!-- mbeans defining JCA administered objects --》《mbean/》《!-- JCA Connection factory definitions --》《tx-connection-factory/》《/connection-factories》
从上可以看出JCA连接工厂的定义在《tx-connection-factory》元素,而且JMS队列和主题被定义在JCA的管理对象mbean里面。
简单的两个队列-入站和出站的完整示例如下:
在JBoss启动脚本中占位符属性被定义为:-Dchannel=MQTEST -DhostName=localhost -DqueueManager=TST_MGR
配置入站消息传递: 消息传递配置在jboss.xml文件中,这个文件的内容会有所不同,但大致如下:jboss.xml
必须指定目标类型和名称属性。其他属性都是可选的,如果省略,将使用其默认值。
一个简单的MDB定义入站消息如下所示:
如何正确设置IBM WebSphere MQ 实现群发消息
1.现在的问题是建立了共享队列INPUTQ 后,在QMGRI里面压根看不到共享队列。。谁能告诉我为什么么?大哥你怎么看的?QL CLUSTER属性设置对了吗?DEF QL(YOURQNAME) CLUSTER(REPOS_NAME)你看的是QCLUSTER吗?DIS QC(*)2.往一个队列管理器里的队列里发消息,其他的所有对立管理器的本地队列都能收到消息太简单了,注意RFHUTIL里面有个BIND属性,不要设置成OPEN,必须是NOT_FIXED;或者多次使用amqsputc多次打开,不要一次拼命放消息,都可以看到分发效果,默认负载均衡的算法是ROUND_ROBIN3.好了,上面的问题解决了。。不过现在对WebSphere MQ的功能产生了怀疑,我真想捧腹大笑4.应用程序只能主动去询问MQ,指定的队列中有消息否。要是这样的话,那不是要轮询指定的队列?难道不能让MQ将消息直接推送到应用程序么?去看看TRIGGER, MDB有关的资料,我不想费口舌了。当你学会基础之前STOP MAKING JUDGEMENTS.
ibm mq 8.0 怎样打开命令控制台
这个例子的目的是建立可以实现消息传递的一对MQ服务器,它们分别基于NT和UNIX平台。运行MQ控制台命令runmqsc QM_NT运行MQ控制台命令runmqsc QM_UNIX
如何用SSL 和IBM MQ 建立连接
使用到MQ是为了保证各系统之间通信的安全性、可靠性和高效性比如,在传输过程中的消息加密,这就可以用IBM提供好的SSL来完成或者是在非实时接收的消息,在接收方系统因各种原因宕机了,希望在接收方系统一旦恢复使用时,就立即将此消息发送,这个时候也可用到MQ又或者是希望简单地完成各消息服务器传输消息时的负载均衡,IBM的MQ也能方便地完成集群要说更简单一点,就是:银行/政府这种的项目就会用到IBM的MQ因为用IBM产品最最重要的一点:得有钱基本上,现在在中间件市场上份额最大的就属IBM的了
使用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
view plain copy
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.ibm.mq.MQC;
import com.ibm.mq.MQEnvironment;
import com.ibm.mq.MQException;
import com.ibm.mq.MQGetMessageOptions;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;
/**
* 列出常用的错误码:如下:
* 2540:通道定义有错误:《/p》
* 解决方式如下:《/p》
* 1.进入用户交互界面:runmqsc QMEMBFE(QMEMBFE为队列管理器名称)
* 2.创建相应的服务器连接通道:DEFINE CHANNEL(DC.SVRCONN) CHLTYPE (SVRCONN) REPLACE
* 2035:授权相关错误:解决方式如下:
* 进入用户交互界面:(同上):
* ALTER CHANNEL(DC.SVRCONN) CHLTYPE(SVRCONN) MCAUSER(’mqm’)
* 说明:DC.SVRCONN 服务器连接通道名称 mqm为ibm mq用户名称
*
*
*
*
* @author kefan
*
*/
public class MessageByMQ {
/**
* 队列管理器的名称
*/
private String qManagerName=“QMEMBFE“;
/**
* 队列管理器
*/
private MQQueueManager qMgr;
/**
* 队列名称
*/
private String queueName=“Q1“;
/**
* 队列
*/
private MQQueue qQueue;
/**
* mq服务器所在的主机名称
*/
private String hostname=“192.168.233.134“;
/**
* 服务器连接通道名称
*/
private String channelName=“DC.SVRCONN“;
/**
* 监听器监听的端口
*/
private int port=1414;
/**
* 传输的编码类型
*/
private int CCSID = 1381;
@Before
public void init(){
try {
MQEnvironment.hostname = this.hostname; // 安装MQ所在的ip address
MQEnvironment.port = this.port; // TCP/IP port
MQEnvironment.channel = this.channelName;
MQEnvironment.CCSID = CCSID;
qMgr = new MQQueueManager(this.qManagerName);
int qOptioin = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_INQUIRE
| MQC.MQOO_OUTPUT;
qQueue = qMgr.accessQueue(queueName, qOptioin);
} catch (MQException e) {
e.printStackTrace();
}
}
/**
* 发送信息
*/
public void SendMsg(byte qByte) {
try {
MQMessage qMsg = new MQMessage();
qMsg.write(qByte);
MQPutMessageOptions pmo = new MQPutMessageOptions();
qQueue.put(qMsg, pmo);
System.out.println(“The message is sent!“);
System.out.println(“\tThe message is “ + new String(qByte, “GBK“));
} catch (MQException e) {
e.printStackTrace();
System.out
.println(“A WebSphere MQ error occurred : Completion code “
+ e.completionCode + “ Reason Code is “
+ e.reasonCode);
} catch (java.io.IOException e) {
e.printStackTrace();
System.out
.println(“An error occurred whilst to the message buffer “
+ e);
}
}
/**
* 从消息队列取数据
*/
public void GetMsg() {
try {
MQMessage retrievedMessage = new MQMessage();
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.options += MQC.MQPMO_SYNCPOINT;
qQueue.get(retrievedMessage, gmo);
int length = retrievedMessage.getDataLength();
byte;
retrievedMessage.readFully(msg);
String sMsg = new String(msg,“GBK“);
System.out.println(sMsg);
} catch (RuntimeException e) {
e.printStackTrace();
} catch (MQException e) {
e.printStackTrace();
if (e.reasonCode != 2033) // 没有消息
{
e.printStackTrace();
System.out
.println(“A WebSphere MQ error occurred : Completion code “
+ e.completionCode
+ “ Reason Code is “
+ e.reasonCode);
}
} catch (java.io.IOException e) {
System.out
.println(“An error occurred whilst to the message buffer “
+ e);
}
}
/**
* 单元测试方法
*/
@Test
public void testMQ(){
MessageByMQ mqst = new MessageByMQ();
mqst.init();
try {
mqst.SendMsg(“你好,Webshpere MQ 7.5!“.getBytes(“GBK“));
mqst.GetMsg();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 释放资源
*/
@After
public void release(){
try {
qQueue.close();
qMgr.disconnect();
} catch (MQException e) {
System.out
.println(“A WebSphere MQ error occurred : Completion code “
+ e.completionCode + “ Reason Code is “
+ e.reasonCode);
}
}
}
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 次调用。这意味着对于应用程序编程员它是一种非常易于使用的接口,因为大部分艰苦工作都将透明完成的
java 怎么样调用IBM MQ 或者通信问题
websphere mq : 用于传输信息 具有跨平台的功能。1 安装websphere mq 并启动2 websphere mq 建立 queue Manager (如:MQSI_SAMPLE_QM)3 建立queue 类型选择 Local类型 的 (如lq )3 建立channels 类型选择Server Connection (如BridgeChannel)
java 代码如下:package test.mq;import com.ibm.mq.*;/* * 成功的访问mq 的java 类 */public class FirstMqTest {// public static void main(String){// FirstMqTest first = new FirstMqTest();// first.test();// } public static void main(String args){ FirstMqTest first = new FirstMqTest(); first.test(); } public void test(){ String qManager = “MQSI_SAMPLE_QM“; //QueueManager name String qName = “lq“;//Queue Name try { //configure connection parameters MQEnvironment.hostname=“172.16.17.123“;//MQ Server name or IP //MQEnvironment.port=1414;//listenr port MQEnvironment.channel=“BridgeChannel“;//Server-Connection Channel MQEnvironment.CCSID =1381; // Create a connection to the QueueManager System.out.println(“Connecting to queue manager: “+qManager); MQQueueManager qMgr = new MQQueueManager(qManager); // Set up the options on the queue we wish to open int openOptions = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_OUTPUT; // Now specify the queue that we wish to open and the open options System.out.println(“Accessing queue: “+qName); MQQueue queue = qMgr.accessQueue(qName, openOptions); // Define a simple WebSphere MQ Message ... MQMessage msg = new MQMessage(); // ... and write some text in UTF8 format msg.writeUTF(“Hello, World!“); // Specify the default put message options MQPutMessageOptions pmo = new MQPutMessageOptions(); // Put the message to the queue System.out.println(“Sending a message...“); /* * 在此测试一下 mq 的传输次列 * */ for(int j=0;j《 5;j++){ String str =“test11111111111“; str = str+j; msg.writeUTF(str); queue.put(msg, pmo); } queue.put(msg, pmo); // Now get the message back again. First define a WebSphere MQ message // to receive the data MQMessage rcvMessage = new MQMessage(); // Specify default get message options MQGetMessageOptions gmo = new MQGetMessageOptions(); // Get the message off the queue. System.out.println(“...and getting the message back again“); queue.get(rcvMessage, gmo); // And display the message text... String msgText = rcvMessage.readUTF(); System.out.println(“The message is: “ + msgText); // Close the queue System.out.println(“Closing the queue“); queue.close(); // Disconnect from the QueueManager System.out.println(“Disconnecting from the Queue Manager“); qMgr.disconnect(); System.out.println(“Done!“); } catch (MQException ex) { System.out.println(“A WebSphere MQ Error occured : Completion Code “ + ex.completionCode + “ Reason Code “ + ex.reasonCode); } catch (java.io.IOException ex) { System.out.println(“An IOException occured whilst writing to the message buffer: “ + ex); } }}