MQ发送消息及读取消息的简单操作

MQ应用程序的开发,简单的实现一下关键的发送消息和接收消息的操作.首先做简单的准备工作,建队列管理器QM1,在QM1中建队列Q1,然后在高级中建立通道BICASHY,类型为服务器连接通道,端口号1414,这里做最简单的配置,死信、传输队列及远程队列都暂时不建。。。
[color=red]注:[/color]如果建另一个队列管理器QM2,其侦听端口一定不能和1414重复。


package com.wondertek.flow.test;

import java.io.IOException;

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;

public class MQManager {

private MQQueueManager qMgr;

private void getConnMQmanager() {
MQEnvironment.hostname = "77.20.17.15";// MQ服务器IP
MQEnvironment.channel = "BICASHY"; // 队列管理器对应的服务器连接通道
MQEnvironment.CCSID = 1381; // 字符编码
MQEnvironment.port = 1414; // 队列管理器的端口号
try {
qMgr = new MQQueueManager("QM1");// 队列管理器名称
} catch (MQException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

private void closeConnMQmanager() {
if (qMgr != null) {
try {
qMgr.close();
} catch (MQException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

public void sendMsg(String msgStr){
int openOptions = MQC.MQOO_INPUT_AS_Q_DEF|MQC.MQOO_OUTPUT|MQC.MQOO_INQUIRE;
MQQueue queue = null;
try {
//建立Q1通道的连接
queue = qMgr.accessQueue("Q1", openOptions, null, null,null);
MQMessage msg = new MQMessage();// 要写入队列的消息
msg.format = MQC.MQFMT_STRING;
msg.characterSet = 1381;
msg.writeObject(msgStr); //将消息写入消息对象中
MQPutMessageOptions pmo = new MQPutMessageOptions();
msg.expiry = -1; // 设置消息用不过期
queue.put(msg, pmo);// 将消息放入队列
} catch (MQException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(queue!=null){
try {
queue.close();
} catch (MQException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

public void receiveMsg()
{
int openOptions = MQC.MQOO_INPUT_AS_Q_DEF|MQC.MQOO_OUTPUT|MQC.MQOO_INQUIRE;
MQQueue queue = null;
try {
queue = qMgr.accessQueue("Q1", openOptions, null, null,null);

System.out.println("该队列当前的深度为:"+queue.getCurrentDepth());
System.out.println("===========================");
int depth = queue.getCurrentDepth();
//将队列的里的消息读出来
while(depth-->0)
{
MQMessage msg = new MQMessage();// 要读的队列的消息
MQGetMessageOptions gmo = new MQGetMessageOptions();
queue.get(msg, gmo);
System.out.println("消息的大小为:"+msg.getDataLength());
System.out.println("消息的内容:\n"+msg.readObject());
System.out.println("---------------------------");
}
} catch (MQException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(queue!=null){
try {
queue.close();
} catch (MQException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

public static void main(String[] args) {
MQManager mm = new MQManager();
mm.getConnMQmanager();
try {
mm.sendMsg("第一条测试信息");
mm.sendMsg("test第二条测试信息");
mm.receiveMsg();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mm.closeConnMQmanager();
}
}
JAVA从MQ读取消息的时候报错及解决 网上有一个例子 ,是JAVA将消息写入到MQ,再通过JAVA去读取消息,采用MQMessage读消息的方法readUTF()去读取的时候,如下 package com.base;import java.io.IOException;   import com.ibm.mq.MQC;   import com.ibm.mq.MQEnvironment;   import com.ibm.mq 阅读详情

相关推荐

mq的链接 消息读取与存放

上一节讲了  MQ的创建,这节主要讲解的是MQ的链接方式 ,我们在回顾以前讲解的一下东西,JMS(Java Message Services( JMS)是消息发送的标准 API为 Java 程序与对消息发送系统对象进行各种操作的消息发送系统进行互动提供了一个常见的模型,有自己本身的方法去链接MQ)   MQ (消息中间键,先进先出,通常存储以队列形式,主题不经常用到,这里提到的mq主要是ibm开

hh337的博客 2222

window 下 MQ服务器命令操作

(1)创建名为venus.queue.manager的默认队列管理器。 在DOS窗口命令提示符下,输入以下命令:         crtmqm-q venus.queue.manager         (2)启动刚才创建的队列管理器。 在DOS窗口命令提示符下,输入以下命令:         strmqmvenus.queue.manager

wangd2006的专栏 1111

IBM Websphere mq消息队列的理解

以下内容均为个人观点,有错误之处请予以指点,多谢 MQ配置 一、双方定义 首先MQ是用来通信的,所以会有双方,我们先假设,发送消息的A,与接收消息的B 二、A方配置 1、新建队列管理器 打开“WebSphere MQ资源管理器”,新建队列管理器,名称为A_dlglq_name(服务器端mq队列管理器名称),其余采用默认设置; 2、创建本地队列 在A_dlglq_name(服务器端mq队列管理器名称)队列管理器中创建本地队列,名称为A_bddl_name(服务器端mq本地队列名称); 3、.

ShyTan的博客 2684

Rabbitmq怎么看消费过了的消息呢?

mq小知识,如何查看消费过的消息

人在江湖 1万+

消息中间件MQ场景常见问题(消息丢失,重复消费,垃圾消息,延时消费)

业务场景:秒杀 ——> 下单 ——> 支付 这三个核心流程中,真正并发量大的是秒杀功能,下单和支付功能实际并发量很小。 所以,我们在设计秒杀系统时,有必要把下单和支付功能从秒杀的主流程中拆分出来, * 特别是下单功能要做成mq异步处理的。而支付功能,比如支付宝支付,是业务场景本身保证的异步 * * 消息丢失问题: * 问题背景:上一步秒杀操作成功了,发送消息的时候出现网络问题或broker挂了等原因,导致消息发送失败,造成消息丢失 * 解决办法:增加一张消息发送表

一介白衣入江南 7555

Cygwin安装教程

简介 cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件 Cygwin就是一个windows软件,该软件就是在windows上仿真linux操作系统 简言之,cygwin是一个在windows平台上运行的 linux模拟环境,使用一个Dll(动态链接库)来实现 这样,我们可以开发出Cygwin下的UNIX工具,使用这个DLL运行在W...

Errol's Blog 13万+

解决mq发消息比存数据库快的问题的另一种方法-亲测

解决mq发消息比存数据库快的问题的另一种方法-亲测 1、背景描述 在一个事务中,既做了插入数据库的操作,又做了向mq生产者发消息的操作,这个时候,mq生产者接收消息过快,导致mq消费者立刻消费,而在消费时,做了查询刚刚插入数据库的那条记录的操作,就会查不到导致空指针异常。 2、解决方案 使用spring的ApplicationEvent、ApplicationListener事件监听来达到延迟效果,就是在插入数据库的那个事务里,不再直接发消息给mq生产者,而是推送一个事件,在监听事件执行时,延迟几秒再发

qimowei的博客 1284

控制障碍函数(Control Barrier Function,CBF) 二、示例

使用一个经典简单的示例讲解CBF的推导

Lyajpunov的博客 6439

rabbitmq了解

简介:(引用) 以熟悉的电商场景为例,如果商品服务和订单服务是两个不同的微服务,在下单的过程中订单服务需要调用商品服务进行扣库存操作。按照传统的方式,下单过程要等到调用完毕之后才能返回下单成功,如果网络产生波动等原因使得商品服务扣库存延迟或者失败,会带来较差的用户体验,如果在高并发的场景下,这样的处理显然是不合适的,那怎么进行优化呢?这就需要消息队列登场了。 消息队列提供一个异步通信机制,消息的发送者不必一直等待到消息被成功处理才返回,而是立即返回。消息中间件负责处...

weixin_43750002的博客 1716

UE4游戏开发:GameInstance与GameMode的实战应用与避坑指南

本文深入解析了UE4中GameInstance与GameMode的核心差异与实战应用。GameInstance作为贯穿游戏进程的全局单例,负责跨关卡数据持久化与系统管理;而GameMode则定义特定关卡内的游戏规则与逻辑,随关卡加载销毁。文章通过数据存储、动态模式切换及网络游戏等场景,提供了清晰的应用指南与常见避坑方案,帮助开发者构建更健壮的UE4游戏架构。

kubernetes8ctl的博客 230

QT编程系列1--QT学习前需知

本周学习了一些QT编程方面的知识,学写了几个程序,这里把记录下来。一方面对前面学习的知识做一个总结,便于以后复习、再学习和应用;另一方面也和大家做个交流,有不足的地方请各位看官多指点。   首先是做一些学习之前的交代:一,学习QT需要哪些基础;二,学习QT有哪些用途,QT较其他的开发工具有哪些特点;三,学习QT的思路。

霜月孤鸟&RTEMS&TinyOS 1117

初识Rabbit MQ用idea实现简单消息发送与读取的操作

1、首先在idea中创建Spring Boot项目 2、在pom文件中导入Rabbit MQ 的核心依赖 3、创建生产者 | public static void main(String[] args) throws IOException, TimeoutException { //1、创建连接工厂 ConnectionFactory factory = new ConnectionFact...

qq_35524008的博客 586

基于Vivado MIG IP核的DDR3读写实验(top_rom_ddr/ddr_top)

一、前言 关于Vivado MIG IP核详细配置可以参考我之前的文章:基于Vivado MIG IP核的DDR3控制器(DDR3_CONTROL) 关于MIG IP核的用户端的接口时序可以参考这篇文章:XILINX 的 MIG IP(非AXI4)接口时序以及控制 二、实验内容 本次实验的内容主要是通过MIG IP核向DDR3读写数据,DDR3的接口时序由ddr_top模块提供: ddr_top模块的数据来源是wr_fifo,wr_fifo的数据实际来自top_sd_photo模块(本实验仿真

耐心的小黑的博客 3028

IBM WebSphere MQ发送消息和接收消息

package com.imp; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import com.ibm.mq.MQC; import com.ibm.mq.MQEnvironment; import com.ibm.mq.MQGetMessageOptions; imp

asuyunlong的专栏 4196

Android面试必考问题:Android性能优化最全面试题及参考答案(8万字长文)

Android 中的 OOM(Out Of Memory,内存溢出)异常是指应用程序在运行过程中,由于申请的内存空间超过了系统所能提供的最大内存限制而导致的错误。在 Android 中,内存泄漏是指应用中的某些对象在不再被使用后,仍然被其他对象持有引用,导致这些对象无法被垃圾回收器回收,从而占用内存空间,随着时间的推移可能会导致应用内存不足,甚至崩溃。在一次开发 Android 应用的过程中,我发现应用在长时间运行后会出现内存占用过高的情况,导致应用变得卡顿,甚至可能会被系统强制关闭。

大模型大数据攻城狮的专栏 2534

【Ranger】mac下Apache Ranger编译安装

a、编译过程中出现测试用例不通过和文件认证错误错误:带上参数-DskipTests=true -Drat.skip=true 重新编译;b、若编译过程中出现缺少jar包的情况,可能下载不了,需要手动自动添加;c、编译所需的其他工具如maven等安装配置略。采用这个会报错,因此我才用了下面一个命令。初始化设置Ranger Admin:执行。然后进入target目录。

九师兄 2108

POSIX 消息队列函数(mq_open、mq_getattr、mq_send、mq_receive)示例

概述 消息队列是Linux IPC中很常用的一种通信方式,它通常用来在不同进程间发送特定格式的消息数据。 消息队列和之前讨论过的管道和FIFO有很大的区别,主要有以下两点: 一个进程向消息队列写入消息之前,并不需要某个进程在该队列上等待该消息的到达,而管道和FIFO是相反的,进程向其中写消息时,管道和FIFO必需已经打开来读,那么内核会产生SIGPIPE信号。 IPC的持续性不同。管道和FIFO...

mayue_web的博客 4万+

【图像拼接(Image Stitching)】关于【图像拼接论文精读】专栏的相关说明,包含专栏使用方法、阅读顺序、创新思路、文章汇总、源码汇总、数据集汇总等。总之,【图像拼接论文相关】看这一篇就够了

为什么会有这篇文章?因为专栏简介里写不下太多东西,只能通过这篇文章和大家交流,算是一个专栏阅读指南吧。说点心里话本来吧,我只想用优快云来记录自己学习【图像拼接】领域论文的过程,对每篇文章有个细致的理解,方便自己反复查阅。设置为付费也是因为涉及论文和本人其他项目需要,防止查重和其他问题,所以价格最开始设置的是专栏付费价格里最高的。起初,确实没有人看,一切也都平淡地度过着。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 4万+

[MQ]什么是消息队列?

什么是消息队列MQ(Message Queue)? 消息(Message):传输的数据。 队列(Queue):队列是一种先进先出的数据结构。 消息队列从字面的含义来看就是一个存放消息的容器。 消息队列可以简单理解为:把要传输的数据放在队列中。 把数据放到消息队列叫做生产者 从消息队列里边取数据叫做消费者 一般来说,消息队列是一种异步的服务间通信方式,是分布式系统中重要的...

超越 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ibm linux mq 发送消息_IBM MQ Series发送消息和读取消息(use JAVA)

import java.io.IOException;import com.ibm.mq.MQC;import com.ibm.mq.MQEnvironment;import com.ibm.mq.MQException;import com.ibm.mq.MQMessage;import com.ibm.mq.MQPutMessageOptions;import com.ibm.mq.MQQue...

weixin_39602579的博客 493

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

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

ibm linux mq 发送消息_IBM MQ 发送 和 接收

package com.xiuye.mq;import java.io.IOException;import java.util.List;import org.apache.log4j.Logger;import com.ibm.mq.MQC;import com.ibm.mq.MQEnvironment;import com.ibm.mq.MQException;import com.ibm....

weixin_29149341的博客 595

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

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

@TransactionalEventListener—事务提交成功后发送mq消息

*** 订单创建成功事件* 注意:事件对象应是不可变的(immutable)*/@Data@Builder/*** 订单ID(唯一标识)*//*** 用户ID*//*** 订单金额*//*** 订单创建时间*//*** 订单项列表*/@Data@Builder。

fupinghaohao的博客 1007

ibm linux mq 发送消息_IBM websphere MQ 消息发送与获得

importjava.io.IOException;importjava.util.Properties;importcom.ibm.mq.MQC;importcom.ibm.mq.MQEnvironment;importcom.ibm.mq.MQException;importcom.ibm.mq.MQGetMessageOptions;importcom.ibm.mq.MQMessage;im...

weixin_39796149的博客 286

ibm linux mq 发送消息_IBM websphere MQ 消息发送与获取

importjava.io.IOException;importjava.util.Properties;importcom.ibm.mq.MQC;importcom.ibm.mq.MQEnvironment;importcom.ibm.mq.MQException;importcom.ibm.mq.MQGetMessageOptions;importcom.ibm.mq.MQMessage;im...

weixin_39654058的博客 377

MQ如何保证消息不丢失?

不能少,就是说不能丢失数据。而且持久化可以跟生产的confirm机制配合起来,只有消息持久化到了磁盘之后,才会通知生产者ack,这样就算是在持久化之前rabbitmq挂了,数据丢了,生产者收不到ack回调也会进行消息重发。消费者消费到了这个数据,然后消费后自动提交了offset,让kafka知道你已经消费了这个消息,当你准备处理这个消息时,自己挂掉了,那么这条消息就丢了。主要是因为消费者消费时,刚消费到,还没有处理,结果消费者就挂了,这样你重启之后,rabbitmq就认为你已经消费过了,然后就丢了数据。

myStyle的博客 1万+
上一篇: 使用dom4j的xpath解析xlm文件
下一篇: apache+tomcat的整合发布
bicashy
博客等级 码龄20年 0粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值