WebSphere MQ Java 应用开发简单实例(上篇:客户端模式开发)(client mode和binding mode)

IBM MQ 通道状态 ibm 通道状态 阅读详情

1-背景知识

IBM MQ支持多种语言开发,本文主要是考虑Java应用开发,MQ提供了相关的Java类库,可以很方便集成到Java应用中。
IBM MQ Java相关类库允许Java应用直接与队列管理器交互,或者连接MQ服务器和客户端进行交互。
类库主要有两个,一个是MQ classes for Java,另一个是支持JMS标准的MQ classes for JMS。

由于是示例学习,本文主要尝试利用MQ classes for Java建立MQ简单应用,从MQ 8.0开始,类库是基于Java 7建立,因此需要Java 7以上运行时环境。

当然官方推荐使用JMS,因为最新的功能例如异步消费、自动重连等功能,都只在JMS中支持

开发有两种通信模式连接MQ:
客户端模式(client mode):应用作为客户端使用TCP/IP连接MQ服务器,应用可以部署在相同机器上或者不同机器上;
绑定模式(binding mode):通过JNI(Java Native Interface)直接连接MQ服务器,避免网络通信,性能更佳,必须和MQ服务器在相同机器上;

2-开发环境准备

2.1 开发环境

VMware Workstation 11.1.4 
SuSE Linux Server x64 SP4 虚拟机
JDK 8.0
MQ 8.0安装包

2.2 安装

安装好虚拟机,SuSE Linux SP4,接下来安装MQ本地开发环境

**安装MQ相关组件**
# tar -xvf WSMQ_8.0_IFR_TRIAL_LNX_ON_X86_64_.tar.gz
# cd server

安装MQ运行时组件:
# rpm -ivh MQSeriesRuntime-8.0.0-2.x86_64.rpm

安装服务器组件:
# rpm -ivh MQSeriesServer-8.0.0-2.x86_64.rpm

安装MQ Java库:这里面提供MQ Java开发相关的类库
# rpm -ivh MQSeriesJava-8.0.0-2.x86_64.rpm 

安装MQ JRE:java运行时用来运行MQ Java应用
# rpm -ivh MQSeriesJRE-8.0.0-2.x86_64.rpm 


**安装JDK**
下载JDK压缩包,放入/home目录下
# cd /home
# tar xvfz jdk-8u102-linux-x64.tar.gz 
# cd jdk1.8.0_102
# ./java -version 

出错:
Error occurred during initialization of VM
Could not allocate metaspace: 1073741824 bytes
很明显内存空间不够导致,原虚拟机只有768MB内存,增加到2GB,然后重启虚拟机

# reboot
# cd /home/jdk1.8.0_102/bin
# ./java -version
# ./javac 
提示安装成功


**配置MQ服务器**
# useradd mquser1 -u 3001
# passwd mquser1  设置密码为mqtest2016
# su - mqm
~ cd /opt/mqm/bin
设置mq环境变量
~ source setmqenv -s

创建队列管理器JAVA.QUEUE.MANAGER.1,并启动
~ crtmqm JAVA.QUEUE.MANAGER.1
~ strmqm JAVA.QUEUE.MANAGER.1
~ dspmq  查看所有队列管理器运行状态

启动脚本执行器,进行设置
~ runmqsc JAVA.QUEUE.MANAGER.1
输入: 
    DEFINE QLOCAL(QUEUE1)    创建本地队列QUEUE1
    授权mquser1用户(id为3001)使用队列QUEUE1,其中PROFILE是对该条记录进行命名,PRINCIPAL指定特定用户,表明权限授权某用户。
    SET AUTHREC PROFILE(QUEUE1) OBJTYPE(QUEUE) PRINCIPAL('mquser1') AUTHADD(PUT,GET)
    授权用户mquser1可以连接队列管理器
    SET AUTHREC OBJTYPE(QMGR) PRINCIPAL('mquser1') AUTHADD(CONNECT)

    定义服务器连接通道
    DEFINE CHANNEL(JAVA.CLIENT.CHANNEL1) CHLTYPE(SVRCONN) TRPTYPE(TCP)

    授权MQ客户端可以连接上面定义的通道,通过ip地址和用户名方式授权
    SET CHLAUTH(JAVA.CLIENT.CHANNEL1) TYPE(ADDRESSMAP) ADDRESS('127.0.0.1') MCAUSER('mquser1')

    定义监听器,接受连接
    DEFINE LISTENER(JAVA.CLIENT.LISTENER1) TRPTYPE(TCP) CONTROL(QMGR) PORT(1316)
    启动:
    START LISTENER(JAVA.CLIENT.LISTENER1)
    结束:
    end

**编写Java程序**
MQ Java应用主要需要包含两个Jar包:com.ibm.mq.allclient.jar 和 com.ibm.mq.traceControl.jar
在安装目录下/opt/mqm/java/lib
# cd /opt/mqm/java/lib
# java -java com.ibm.mq.allclient.jar  查看该jar详细信息

接下来可以用vim或者IDE编写程序

3-客户端模式进行连接

简单应用,读写本机队列,发送消息和读取消息,以客户端模式,利用TCP/IP进行通信

# cd /home/mq
# vim MQTest.java
输入以下内容:
import java.io.IOException;
i
WebSphere MQ Java 应用开发简单实例(下篇:绑定模式开发)(client mode和binding mode) 4-绑定模式连接Java应用程序必须和MQ服务器安装在同一个机器上,通过进程间通信机制,不通过TCP/IP进行通信,减少网络开销。 MQ提供32和64位版本的MQ JNI库,默认在/opt/mqm/java/lib/和/opt/mqm/java/lib64/目录下: mqjbnd.so: 该库为应用提供绑定模式连接MQ;修改代码:其实变动更小,只要将主机地址和端口去掉即可,因为绑定模式不需要网络通信 阅读详情

相关推荐

AXIS2实战指南:SOAP服务部署、调试与性能调优

Web服务是企业系统集成的基础能力,而SOAP协议因其强契约性、跨语言兼容性和WS-*标准支持,在金融、电力、政务等强规范场景中仍不可替代。AXIS2作为成熟稳定的Java SOAP引擎,核心价值在于将POJO精准映射为WSDL可描述的服务,并在WebLogic、WebSphere等传统中间件中可靠运行。其模块化架构(AxisEngine/Phase/Handler)支撑消息全生命周期管控,但classloader隔离、OMElement内存模型、线程安全Stub等特性也带来典型工程挑战。本文聚焦AXIS2

weixin_33895475的博客 277

第三章 实验二IBM MQ高可用HA下绑定VIP地址做IP地址漂移

一、实验前言 场景二:测试高可用HA下绑定VIP地址做IP地址漂移(QMRGRECGC->QMFX),实现在单节点故障情况下,自动虚IP漂移到另一个节点上实现服务高可用 目的:1.虚IP在2个节点间自动漂移;2.VIP漂移后应用程序能够自动重连实现消息重复不丢失,服务高可用 回执发送在两个网关管理器前面加了一层高可用Keepalived来实现故障IP切换,对程序连接是透明的。 多个网关队列...

suifeng_2004的博客 2453

如何进行WebShpere MQ 运行故障的定位分析和排除

任何一种软件,都会存在一定的系统管理工作,WebSphere MQ也不例外,在使用WebSphere MQ(以下简称MQ)时,我们可能会由于配置的原因或者由于系统的原因,也可能由于MQ本身的原因,而遇到MQ运行过程中的一些故障和问题,如何能够快速地定位这些问题,分析问题发生的原因,进而快速地解决问题,恢复系统正常运行呢?这需要一定的经验积累和技巧,本文将对这方面给出一些简单的提示和方法。 其

~ 3952

学习使用WebSphere MQ for Java编程

学习使用WebSphere MQ for Java编程。 WebSphere MQ for Java允许用Java 编程语言写成的程序直接访问WebSphere MQ Server,或作为一个WebSphere MQ Client连接到WebSphere MQ。

AMQ接收与发送

activeMQ的接收端与发送端分离出来的,接收与发送分离,运行之后在MQ控制台查看。

保姆级教程:在RK3588平台上为IMX415 Sensor配置HDR2曝光(附完整代码与避坑点)

本文提供RK3588平台上为IMX415 Sensor配置HDR2曝光的详细教程,涵盖基础概念、限制条件、实战配置步骤及常见问题解决方案。通过完整代码示例和关键参数解析,帮助开发者高效实现HDR2曝光模式,提升图像质量并避开常见陷阱。

weixin_28685287的博客 283

SE (3) -Transformers:三维旋转 - 平移等变注意力网络

E (3) 变换器,这是一种用于三维点云和图的自注意力模块变体,在连续三维旋转平移下具有等变性。注意力机制的计算量会随着点云规模的增大呈二次方增长,因此引入邻域的概念是很有必要的:每个点不再关注所有其他点,而只关注其最近的邻点。注意力机制此前已在图的领域中以内部注意力、自注意力、顶点注意力或图注意力等名称被引入 [17, 31, 32, 12, 26]。等变性意味着当输入数据发生旋转或平移时,模型的输出也会以相应的、可预测的方式进行变换,从而保证模型性能的稳定性和可预测性。

qq_49786473的博客 1479

基于boot + 双app升级方案

基于boot+双app的升级方案

weixin_44654285的博客 4514

扩展卡尔曼滤波 (EKF, Extended Kalman Filter) 算法详解及案例分析

扩展卡尔曼滤波是一种用于估计非线性动态系统状态的递归算法。其目标是通过结合非线性系统模型和观测数据,估计系统的最优状态。

闲人编程的博客 2382

java技术专家 【DDD(领域驱动设计)思想解读及优秀实践 22】|泛化建模(上):领域知识更抽象怎么办?

java技术专家 【DDD(领域驱动设计)思想解读及优秀实践 22】|泛化建模(上):领域知识更抽象怎么办?

大壮 1165

152:vue+leaflet 判断一个点是否在一个电子围栏内

本文介绍了一个基于Vue+Leaflet的示例,演示如何判断点是否在电子围栏内。作者大剑师兰特(优快云知名博主)展示了使用polygon.getBounds().contains(latlng)方法检测点与多边形边界的关系。代码仅需80行,通过点击地图触发判断逻辑,结果显示提示信息。该技术可广泛应用于地理围栏、位置服务等场景,需要安装turf依赖。文章提供了完整源码和配置说明,适合GIS开发者学习参考。

大剑师兰特的GIS世界 756

C++ PCL点云处理实战专栏

工业级点云处理技术学习资源,涵盖电力、建筑、隧道等领域的实战案例。内容分为三阶段:代码原理(算法认知)、动态库(项目验证)和完整代码(定制开发)。

weixin_45196569的博客 1117

学习笔记:TF卡启动荔枝派Nano(全志F1C200S)

荔枝派Nano编译Kernel报错报错内容如下编译烧录 报错内容如下 No controllers found No ethernet found. 从这些报错我真没看从出啥问题,也是在网上找,说是没有找到flash,是因为淘宝买的板子更换了flash,需要在u-boot里面重新适配型号: 板子的型号为xt25f128,但是实际u-boot的配置里面不是需要重新更改: u-boot/arch/arm/dts/suniv-f1c100s-licheepi-nano.dts &spi0 { pin

热爱科技,物联,程序开发等 2133

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: WebSphere MQ 安装与验证
下一篇: WebSphere MQ Java 应用开发简单实例(下篇:绑定模式开发)(client mode和binding mode)
壹零Boy
博客等级 码龄14年 31粉丝 43原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值