使用jms工厂连接websphere mq
来源:互联网 发布:java pdf转word 编辑:程序博客网 时间:2024/06/04 08:11
1.mq服务器端的配置:
1.1配置队列管理器
1.2配置服务器连接通道
1.3配置队列
1.4java客户端的用户认证配置:
权限重点补充一下:
本例中mq的版本为:7.5。
授权需要对队列管理器和队列分别授权:
查看java客户端的用户是否有连接mq的权限:
--查看连接队列管理器的权限:
dspmqaut -m QMEMBFE -t qmgr -p issuser
setmqaut -m QMEMBFE -t qmgr -p issuser +all +connect
注意connect权限,如果没有connect权限,则客户端会提示,无权限,貌似错误码为:2035.
issuser不应该为mqm组内的成员,因为,mq默认的会拦截mq组内的所有成员.
--查看连接队列的权限,如果没有权限,类似与上一步授权:
dspmqaut -m QMEMBFE -n 9071000030_4 -t queue -p issuser
setmqaut -m QMEMBFE -n 9071000030_4 -t queue -p issuser +all +connect
2.java客户端的编写:
2.1需要添加的jar:对应的jar可以在mq的安装目录下找到:
注:mq7.5中的com.ibm.mq.jmqi.jar有问题:可以使用反编译软件查看,会发现class有问题:
2.2代码实现:
2.2.1配置文件:
app.properties
jms.mbfe.inqueuename=9071000030_4
jms.mbfe.outqueuename=9071000030_6
systme.character=UTF-8
#add by kefan
jms.mq.queuemanagername=QMEMBFE
jms.mq.hostname=192.168.233.134
#jms.mq.hostname=10.14.2.183
jms.mq.port=1414
jms.mq.ccsid=819
jms.mq.channel=SYSTEM.ADMIN.SVRCONN
#jms.mq.channel=server1
#jms.mq.channel=server1
#jms.mq.username=administrator
#jms.mq.password=Sinomfroot123
jms.mq.username=issuser
#jms.mq.username=mqm
jms.mq.password=123456
2.2.2代码:
import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.Properties;import javax.jms.BytesMessage;import javax.jms.Connection;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.MessageConsumer;import javax.jms.MessageProducer;import javax.jms.Queue;import javax.jms.Session;import com.ibm.jms.JMSBytesMessage;import com.ibm.msg.client.jms.JmsConnectionFactory;import com.ibm.msg.client.jms.JmsConstants;import com.ibm.msg.client.jms.JmsFactoryFactory;import com.ibm.msg.client.wmq.WMQConstants;public class ConnectionTest {public static final String SYSTEM_CHARCTER = "UTF-8";private Connection jmsConnection = null;private Session jmsSession = null;private Queue jmsQueue = null;private String strQuereName = "测试队列管理器";private MessageProducer jmsProducer = null;private MessageConsumer messageConsumer = null;/** * 初始化连接参数 * * @throws JMSException */public void initial() throws JMSException {Properties pro = new Properties();try {pro.load(Main.class.getResourceAsStream("app.properties"));JmsFactoryFactory jmsff = JmsFactoryFactory.getInstance(JmsConstants.WMQ_PROVIDER);JmsConnectionFactory jmscf = jmsff.createConnectionFactory();/** * 队列管理器 */jmscf.setStringProperty("XMSC_WMQ_QUEUE_MANAGER",pro.getProperty("jms.mq.queuemanagername"));/** * 运行队列管理器的主机地址 */jmscf.setStringProperty("XMSC_WMQ_HOST_NAME",pro.getProperty("jms.mq.hostname"));/* * 队列管理器监听的端口 */jmscf.setIntProperty("XMSC_WMQ_PORT",Integer.parseInt((String) pro.get("jms.mq.port")));/* * 服务器连接通道名称 */jmscf.setStringProperty("XMSC_WMQ_CHANNEL",pro.getProperty("jms.mq.channel"));/* * 编码规则 */jmscf.setIntProperty("CCSID", 1381);/* * 以客户端连接的方式连接队列管理器 */jmscf.setIntProperty("XMSC_WMQ_CONNECTION_MODE",WMQConstants.WMQ_CM_CLIENT);/* * 创建连接需要制定用户名和密码:服务器端的设置需要注意:对应的用户是否有访问队列管理器和队列的权限 */this.jmsConnection = jmscf.createConnection("issuser", "199404");this.jmsSession = this.jmsConnection.createSession(true, 0);this.jmsQueue = this.jmsSession.createQueue(pro.getProperty("jms.mbfe.inqueuename"));this.strQuereName = "普通发送队列";this.jmsProducer = this.jmsSession.createProducer(this.jmsQueue);messageConsumer = this.jmsSession.createConsumer(this.jmsQueue);} catch (IOException e) {e.printStackTrace();}}/** * 发送消息 * * @param textMessage * @throws ECDSServiceException */public void send(String textMessage){try {BytesMessage bm = this.jmsSession.createBytesMessage();bm.writeBytes(textMessage.getBytes(SYSTEM_CHARCTER));this.jmsConnection.start();this.jmsProducer.send(bm);this.jmsSession.commit();this.close();} catch (JMSException e) {e.getLinkedException().printStackTrace();e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();}}/** * 发送消息 * * @param textMessage * @throws UnsupportedEncodingException * @throws ECDSServiceException */public void get() throws UnsupportedEncodingException{try {this.jmsConnection.start();Message message = this.messageConsumer.receive();if (message instanceof BytesMessage) {BytesMessage bm = (BytesMessage) message;byte[] buf = new byte[1024];int len = 0;ByteArrayOutputStream content = null;content = new ByteArrayOutputStream();while ((len = bm.readBytes(buf)) > 0) {content.write(buf, 0, len);}String strMessage = new String(content.toByteArray(),SYSTEM_CHARCTER);System.out.println(strMessage);}this.jmsSession.commit();this.close();} catch (JMSException e) {e.getLinkedException().printStackTrace();e.printStackTrace();}}public static void main(String[] args) throws JMSException, UnsupportedEncodingException {// 创建连接ConnectionTest test = new ConnectionTest();// 发送消息test.initial(); //test.send("hello queue!");test.get();}public void close() {if (this.jmsProducer != null) {try {this.jmsProducer.close();this.jmsProducer = null;} catch (JMSException e) {e.printStackTrace();}}}}
- 使用jms工厂连接websphere mq
- WebSphere MQ Jms 连接
- 将 JMS 连接池与 WebSphere Application Server 和 WebSphere MQ 一起使用,第 1 部分
- 使用JMS接口接入WebSphere MQ消息
- 使用JMS接口接入WebSphere MQ消息
- JMS 使用SSL 连接Websphere MQ出现的问题 WIN7平台
- 用 IBM WebSphere MQ JMS 提供程序
- websphere mq jms调用通信demo
- WebSphere MQ使用
- 使用MQ JMS
- JMS 接收 IBM Websphere MQ 消息报错 :JMSCC0065
- Spring Boot JMS与IBM WebSphere MQ集成配置
- WebSphere MQ
- WebSphere MQ
- Websphere MQ
- WebSphere MQ
- websphere mq
- 使用WebSphere MQ最佳实践 TOP 15
- C++11中的匿名函数指针(Lambda表达式)
- c++ primer记录
- 飞机大战JAVA编程
- 二级C语言复习5
- Linux c — void类型变量和指针
- 使用jms工厂连接websphere mq
- 微信公众平台开发教程第1篇-新手解惑
- 第三周项目二 建设“顺序表”算法库
- curl 实现sftp功能
- [Android] ButterKnife8.0以上 空指针错误
- 基于cocos2d-x引擎3.9版本分析之CCRef篇
- linux mkdir命令小结
- sizeof和strlen的区别
- oracle for循环loop的工作机制