我在AS400/iSeries中使用数据队列,并使用jdbc jt400库从其中读取数据。
由于它是生产者(AS400)/消费者(myapp)模式,我想检查数据队列中现在有多少条目,并测量我的应用程序是否运行得足够快或我需要更改某些内容。
我可以获取数据队列的最大长度/大小,但不能获取当前长度/大小。
我如何获得或计算该值?
我可以使用rpg程序并调用它,但更喜欢jt400/jdbc解决方案。
谢谢
我编辑这个问题以添加应该执行此任务的代码,但我得到一个例外:
String pname = "/QSYS.LIB/QMHQRDQD.PGM";
int param0_size = 120; // RDQD0100 size
int size = -1;
ProgramCall spgm = new ProgramCall(as400);
ProgramParameter[] params = new ProgramParameter[4];
params[0] = new ProgramParameter(param0_size);
AS400Bin4 length = new AS400Bin4();
params[1] = new ProgramParameter(length.toBytes(param0_size));
AS400Text formatname = new AS400Text(8);
params[2] = new ProgramParameter(formatname.toBytes("RDQD0100"));
AS400Text dataqueuename = new AS400Text(20);
params[3] = new ProgramParameter(dataqueuename.toBytes("DTQDTQ LIBFIC "));
byte[] RDQD0100 = new byte[120];
try {
spgm.setProgram(pname, params);
if (spgm.run() == true) {
AS400Text out = new AS400Text(param0_size);
RDQD0100 = out.toBytes(params[0].getOutputData());
ByteBuffer bb = ByteBuffer.wrap(RDQD0100);
bb.position(76); // Number of entries currently allocated
size = bb.getInt();
}
}
catch (Exception e){
Logger.error(" ERROR {} ", e);
}
return size;
我总是得到-1作为答案和RDQD0100=out.toB行中的异常。
例外情况是
java.lang.ClassCastException: [B 不能强制转换为 java.base/java.lang.String
有什么线索吗?再次感谢
使用base JT400,似乎没有办法获得数据队列中的条目数。
您可以使用 QMHQRDQD API 来获取队列中的消息数。
好的,我发现我的问题中增加了代码的失败,并想分享解决方案。
此代码返回库 LIBFIC 上数据队列 DTQDTQ 中的当前条目数,如果发生错误/异常,则返回 -1。
int getDQSize() {
String pname = "/QSYS.LIB/QMHQRDQD.PGM";
int param0_size = 120; // RDQD0100 size
int size = -1;
ProgramCall spgm = new ProgramCall(as400);
ProgramParameter[] params = new ProgramParameter[4];
params[0] = new ProgramParameter(param0_size);
AS400Bin4 length = new AS400Bin4();
params[1] = new ProgramParameter(length.toBytes(param0_size));
AS400Text formatname = new AS400Text(8);
params[2] = new ProgramParameter(formatname.toBytes("RDQD0100"));
AS400Text dataqueuename = new AS400Text(20);
params[3] = new ProgramParameter(dataqueuename.toBytes("DTQDTQ LIBFIC "));
byte[] RDQD0100 = new byte[120];
try {
spgm.setProgram(pname, params);
if (spgm.run() == true) {
ByteBuffer bb = ByteBuffer.wrap(params[0].getOutputData());
bb.position(72);
size = bb.getInt();
}
}
catch (Exception e){
Logger.error(" ERROR {} ", e);
}
return size;
}
再次感谢David G
数据队列接口 结构体 struct rt_data_queue 数据队列控制块 更多... 宏定义 #define RT_DATAQUEUE_EVENT_UNKNOWN 0x00 未知数据队列事件 #define RT_DATAQUEUE_EVENT_POP 0x01 数据队列取出事件 #define RT_DATAQUEUE_EVENT_PUSH 0
问题内容: 我们正在使用amqplib来发布/使用消息。我希望能够读取队列中的消息数(理想情况下是已确认和未确认)。这将使我能够向管理员用户显示良好的状态图,并检测某个组件是否无法满足负载需求。 我在amqplib文档中找不到有关读取队列状态的任何信息。 有人可以指出我正确的方向吗? 问题答案: 使用皮卡: 使用PyRabbit: 使用HTTP 句法: 例: 注意:默认虚拟主机是需要转义为 使用C
问题内容: 我想获取基于条件选择的数据帧行数。我尝试了以下代码。 输出: 输出显示数据帧中每一列的计数。相反,我需要获得满足以上所有条件的单一计数?这该怎么做?如果您需要有关我的数据框的更多说明,请告诉我。 问题答案: 您要的是所有条件都为真的条件,所以答案是len,除非我误解了您的要求
我试图创建java可以访问EMS队列检查挂起消息的类,但在下面是我的简单代码 “我尝试做什么”方法可以给他队列名称它是“给我挂起的消息” 错误:运行:线程“main”java中出现异常。lang.NoClassDefFoundError:com/tibco/tibjms/TibjmsQueueConnectionFactory位于com。tibco公司。tibjms。管理MessengerUtil
问题内容: 假设我有一个这样的搜索查询: 如您所知,例如,我得到这样的结果: 但是我 没有 得到一周中没有创建任何条目的日子。 如何获得看起来像这样的搜索结果, 包括 没有创建条目的日子? 问题答案: SELECT day, COALESCE(ct, 0) AS ct FROM (SELECT now()::date - d AS day FROM generate_series (0, 6) d
嗨,伙计们,我正在使用Laravel5.5,我有两个表,用户和服务 用户表 ID 名称 电子邮件 密码 地址 城市 国家 邮政编码 null 提前谢了。热烈问候:阿卜杜拉·沙希德。
如何将spark数据框中的所有列名放入Seq变量中。 输入数据 我需要使用scala编程将所有列名存储在变量中。我尝试了如下方法,但不起作用。 预期输出:
数组实现简单队列 class Node(object): def __init__(self, data): self.data = data self.next = None def __str__(self) -> str: return '(data=%d)' % self.data class SimpleQueue(o