javamq,javamqtt

本文目录一览:

java mq消息包括哪些框架

websphere mq : 用于传输信息 具有跨平台的功能。 1 安装websphere mq 并启动 2 websphere mq 建立 queue Manager (如:MQSI_SAMPLE_QM) 3 建立queue 类型选择 Local类型 的 (如lq ) 3 建立channels 类型选择Server Connection (如BridgeChan…

在JAVA开发中,如何查询MQ中的队列句柄状态?

你用的是IBM MQ还是Apache的? 一般通过JAVA的JMS可以取得。

例如IBM MQ里有个MQQueue 对象

// 获取队列实例

MQQueue queue = qMgr.accessQueue(“TEST_QUEUE”, openOptions);

//获取当前队列最长消息的长度

queue.getMaximumMessageLength()

//获取当前队列最长深度

queue.getMaximumMessageLength()

等等功能都是提供的,具体你下载个WebSphere MQ API 找到MQQueue一看便知。

java事务中调用mq,如果事务回滚,消息会被撤回吗

回。java事务中调用mq是公司开发的平台程序,程序内设置了撤回语言,如果事务回滚消息会被撤回处理,Java的事务处理,如果对数据库进行多次操作,每一次的执行或步骤都是一个事务。

mq java 怎么判断队列为空

MQException

该类包含WebSphere MQ 完成代码和错误代码常量的定义。以MQCC_开始的常量是WebSphere MQ 完成代码,而以MQRC_开始的常量则是WebSphere MQ 原因代码。只要出现WebSphere MQ

错误,就会给出MQException。

MQGetMessageOptions

该类包含控制MQQueue.get()方法行为的选项。

MQManagedObject

该类是MQQueueManager、MQQueue 和MQProcess 类的超类。它提供查询并设置这些资源属性的能力。

——解决方案——————–

去取一次,得到 2033 错误就是没有消息符合你的条件。

使用 PCF 查询队列资料:

/**

* @return current depth of queue connected currently.

* @throws Exception

*/

public QueueInfo queryQueueInfo() throws Exception {

if (!checkStatus2(this.queueManager)) {

throw new IllegalStateException(“Not Connected to queue manager.”);

}

PCFMessageAgent agent = null;

try {

agent = new PCFMessageAgent(this.queueManager);

// Inquiry Queue Name Current Depth.

int[] attrs = {

CMQC.MQCA_Q_NAME, CMQC.MQIA_CURRENT_Q_DEPTH,

CMQC.MQIA_OPEN_INPUT_COUNT, CMQC.MQIA_OPEN_OUTPUT_COUNT,

CMQC.MQIA_Q_TYPE, CMQC.MQIA_DEFINITION_TYPE, CMQC.MQIA_INHIBIT_GET,

CMQC.MQIA_INHIBIT_PUT };

PCFParameter[] parameters = {

new MQCFST(CMQC.MQCA_Q_NAME , getInputQueue().getText().trim()),

new MQCFIL(CMQCFC.MQIACF_Q_ATTRS , attrs) };

// logger.log(“Querying current depth of current queue.”);

MQMessage[] responses = agent.send(CMQCFC.MQCMD_INQUIRE_Q, parameters);

QueueInfo info = new QueueInfo();

for (int i = 0; i responses.length; i++) {

MQCFH cfh = new MQCFH(responses[i]);

// Check the PCF header (MQCFH) in the response message

if (cfh.reason == 0) {

String name = “”;

Integer depth = new Integer(0);

for (int j = 0; j cfh.parameterCount; j++) { // Extract what we want from the returned attributes

PCFParameter p = PCFParameter.nextParameter(responses[i]);

switch (p.getParameter()) {

case CMQC.MQCA_Q_NAME:

name = (String) p.getValue();

info.name = name;

break;

case CMQC.MQIA_CURRENT_Q_DEPTH:

depth = (Integer) p.getValue();

info.depth = depth.intValue();

break;

case CMQC.MQIA_OPEN_INPUT_COUNT:

Integer inputCount = (Integer) p.getValue();

info.inputCount = inputCount.intValue();

break;

case CMQC.MQIA_OPEN_OUTPUT_COUNT:

Integer outputCount = (Integer) p.getValue();

info.outputCount = outputCount.intValue();

break;

case CMQC.MQIA_Q_TYPE:

info.type = ((Integer) p.getValue()).intValue();

break;

case CMQC.MQIA_DEFINITION_TYPE:

info.definitionType = ((Integer) p.getValue()).intValue();

break;

case CMQC.MQIA_INHIBIT_PUT:

info.putNotAllowed = ((Integer) p.getValue()).intValue() == 1;

break; case CMQC.MQIA_INHIBIT_GET:

info.getNotAllowed = ((Integer) p.getValue()).intValue() == 1;

default:

}

}

// System.out.println(“Queue ” + name + ” curdepth ” + depth);

return info;

} else {

System.out.println(“PCF error:\n” + cfh);

// Walk through the returned parameters describing the error

for (int j = 0; j cfh.parameterCount; j++) {

System.out.println(PCFParameter.nextParameter(responses[0]));

}

throw new Exception(“PCF Error [reason :” + cfh.reason + “]”);

}

}

return null;

} catch (Exception e) {

throw e;

} finally {

if (agent != null) {

try {

agent.disconnect();

} catch (Exception e) {

logger.log(e);

}

}

}

java 监听mq消息 底层是用线程实现的吗

不是通过线程实现的,它是通过一种注册–通知机制实现的。在java的设计模式中,有一种模式叫:观察者模式,和这个类似。举个例子,本例子是一个简单的监听当数据发生变化时要做的操作。

1,我们先定义一个接口,可以让多个监听者实现pre t=”code” l=”java”public interface IDataListen {

public void update(Object event,Object msg);

}2,实现一监听者

pre t=”code” l=”java”public class DataListen implements IDataListen{

@Override

public void update(Object event, Object arg) {

// TODO Auto-generated method stub

System.out.println(“数据发生了变化”);

}

}3,被监听者

pre t=”code” l=”java”public class DataManager{

private ListIDataListen listenList = new ArrayList();

public void notifyListen(Object event,Object msg){

for(IDataListen dataListen : listenList){

dataListen.update(null, null);

}

}

public void addListen(IDataListen dataListen){

listenList.add(dataListen);

}

public void updateData(Object msg){

this.notifyListen(null, msg);

}

public static void main(String[] args) {

DataManager dataManager = new DataManager();

IDataListen dataListen1 = new DataListen();

IDataListen dataListen2 = new DataListen();

dataManager.addListen(dataListen1);

dataManager.addListen(dataListen2);

dataManager.updateData(“aaa”);

}

}main方法里面是监听的应用。这样就可以监听DataManager中的updateData行为了,当有数据发生变化时,就可以即时被监听者收到。

java使用mq get api从mq中取数据怎样触发侦听器连续取数据

{

//前面是准备管理器和队列

MQQueueManager qMgr = new MQQueueManager(qManager);

int openOptions = MQConstants.MQOO_INPUT_AS_Q_DEF | MQConstants.MQOO_OUTPUT | MQConstants.MQOO_INQUIRE;

MQQueue queue = qMgr.accessQueue(qName, openOptions);

MQMessage rcvMessage = new MQMessage();

MQGetMessageOptions gmo = new MQGetMessageOptions();

gmo.options = gmo.options + MQConstants.MQGMO_WAIT + MQConstants.MQGMO_SYNCPOINT;

//读取五秒超时,这里目的是要有个读取阻塞,和Socket编程类似。

gmo.waitInterval = 5000;

queue.get(rcvMessage, gmo);

//后面就是操作消息的部分【略】

}catch(Exception e){{

//前面是准备管理器和队列

MQQueueManager qMgr = new MQQueueManager(qManager);

int openOptions = MQConstants.MQOO_INPUT_AS_Q_DEF | MQConstants.MQOO_OUTPUT | MQConstants.MQOO_INQUIRE;

MQQueue queue = qMgr.accessQueue(qName, openOptions);

MQMessage rcvMessage = new MQMessage();

MQGetMessageOptions gmo = new MQGetMessageOptions();

gmo.options = gmo.options + MQConstants.MQGMO_WAIT + MQConstants.MQGMO_SYNCPOINT;

//读取五秒超时,这里目的是要有个读取阻塞,和Socket编程类似。

gmo.waitInterval = 5000;

queue.get(rcvMessage, gmo);

//后面就是操作消息的部分【略】

}catch(Exception e){

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/285389.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-22 15:44
下一篇 2024-12-22 15:44

相关推荐

  • JAVAmq技术详解

    一、JAVAmqtt JAVAmqtt是基于MQTT协议的轻量级消息协议,实现了发布/订阅模式的消息传递。在JAVAmq中,通过使用JAVAmqtt客户端,开发人员可以方便地在设备…

    编程 2024-11-19
  • 关于javamqtt的信息

    本文目录一览: 1、Java项目:mqtt发送的数据如何保存到数据库里? 2、Java/Android:关于ActiveMQ与MQTT的关系是什么? 3、mqtt 服务器搭建需要用…

    编程 2024-11-11

发表回复

登录后才能评论