- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 mo01 java 支持包从 SYSTEM.ADMIN.CHANNEL.EVENT Queue 读取事件消息。
下面是代码链接:
我可以从 channel 事件队列消耗的 PCF 消息中读取除以下参数之外的所有参数名称/值,
ReasonQualifierSpecifies the identifier that qualifies the reason code.IdentifierMQIACF_REASON_QUALIFIER.DatatypeMQCFIN.ValuesOne of the following:MQRQ_CHANNEL_STOPPED_OKChannel has been closed with either a zero return code or a warning return code.MQRQ_CHANNEL_STOPPED_ERRORChannel has been closed, but there is an error reported and the channel is not in stopped or retry state.MQRQ_CHANNEL_STOPPED_RETRYChannel has been closed and it is in retry state.MQRQ_CHANNEL_STOPPED_DISABLEDChannel has been closed and it is in a stopped state.ReturnedAlways.
下面是部分代码,
Map reasonCodes = new HashMap(); /** Map of MQ command names and values. */ Map commands = new HashMap(); /** Map of MQ string names and values. */ Map stringNames = new HashMap();private String getStringName(int stringInt) { return (String)stringNames.get(new Integer(stringInt)); } /** * Converts a constant integer to its MQ command name. * @param stringInt the MQ integer. * @return the MQ command name represented by the constant integer. */ private String getCommandName(int stringInt) { return (String)commands.get(new Integer(stringInt)); }// Below methods retrieves int code's string value from classes and store in HashMappublic void setupMaps() { setupReasonNameSub("com.ibm.mq.pcf.CMQC", "MQRC", reasonCodes); setupReasonNameSub("com.ibm.mq.pcf.CMQCFC", "MQRC", reasonCodes); setupReasonNameSub("com.ibm.mq.pcf.CMQCFC", "MQCMD", commands); setupReasonNameSub("com.ibm.mq.pcf.CMQC", "MQCA", stringNames); setupReasonNameSub("com.ibm.mq.pcf.CMQCFC", "MQCA", stringNames); setupReasonNameSub("com.ibm.mq.pcf.CMQC", "MQIA", stringNames); setupReasonNameSub("com.ibm.mq.pcf.CMQC", "MQRQ", reasonCodes); }void readPCFMessage(PCFMessage pcfMessage){Enumeration pcfEnum = pcfMessage.getParameters();stdout = stdout + "" + getReasonName(pcfMessage.getReason()) + "\n"; while (pcfEnum.hasMoreElements()) { String parameterName; PCFParameter elt = (PCFParameter)pcfEnum.nextElement(); parameterName = getStringName(elt.getParameter()); stdout = stdout + ""; if (elt.getType() == CMQCFC.MQCFT_STRING_LIST) { String strings[] = (String[])elt.getValue(); for (int i = 0; i " + strings[i] + "\n"; } } else stdout = stdout + elt.getValue().toString(); stdout = stdout + "\n"; }System.out.println(stdout);}Output:MQRC_CHANNEL_STOPPEDQMGR1CHL.TO.CHLASYSTEM.CLUSTER.TRANSMIT.QUEUE172.21.33.1239000CHL.TO.CHLA如果某个 channel 停止,我想知道它是因问题停止还是正常正常停止的确切原因。该参数告诉我们 channel 停止的正确原因。
知道为什么这个参数不可检索吗?
最佳答案
Event Messages/Channel Stopped信息中心页面列出了返回的PCF消息中的所有字段。我已将字段映射到您发布的回复:
QMgrName MQCFST QMGR1
ReasonQualifier MQCFIN 9
ChannelName MQCFST CHL.TO.CHLA
ErrorIdentifier MQCFIN 0
AuxErrorDataInt1 MQCFIN 0
AuxErrorDataInt2 MQCFIN 0
AuxErrorDataStr1 MQCFST ""
AuxErrorDataStr2 MQCFST ""
AuxErrorDataStr3 MQCFST ""
XmitQName MQCFST SYSTEM.CLUSTER.TRANSMIT.QUEUE
ConnectionName MQCFST 172.21.33.123
???? MQCFST CHL.TO.CHLA (See below)
cmqc.h
文件将原因代码映射到其宏,如下所示:
#define MQRQ_CHANNEL_STOPPED_OK 7
#define MQRQ_CHANNEL_STOPPED_ERROR 8
#define MQRQ_CHANNEL_STOPPED_RETRY 9
#define MQRQ_CHANNEL_STOPPED_DISABLED 10
我怀疑,如果您要打印哈希键和值,那么您返回的整数 9 将代表您声称尚未收到的 MQIACF_REASON_QUALIFIER
,并整理出哪些的字符串返回 null。看起来不合适的一个值是额外的 channel 名称,我相信这实际上是 AuxErrorDataStr1
但我将其映射为 ????因为无法从所提供的信息中确定。
如果我可以预见您的下一个问题,它可能是“好的,所以如果原因限定符表示 channel 要重试,那么 ErrorIdentifier
在哪里?”答案是 MQRQ_CHANNEL_STOPPED_RETRY
不是错误。这是正常的 channel 状态。 ErrorIdentifier
字段的描述指出,如果 channel 由于错误而停止,则 ReasonQualifier
字段将包含值 MQRQ_CHANNEL_STOPPED_ERROR
。在本例中,ReasonQualifier
包含 MQRQ_CHANNEL_STOPPED_RETRY
,因此 ErrorIdentifier
预计不会包含任何内容。
顺便请注意,MQRQ_CHANNEL_STOPPED_*
有点用词不当。 RETRY
中的 channel 不被视为已停止。它处于 RUNNING
和 STOPPED
之间的中间状态,一旦重试次数耗尽,它可能会结束,或者可能会恢复到 RUNNING
(如果重试成功。但是,生成该事件是为了记录 channel 从运行或空闲状态更改为功能较少的状态。
直接回答您的问题“知道为什么此参数不可检索吗?”我对参数不可检索的前提提出质疑。修改代码以打印键和值,我相信它将显示整数 9 值作为您正在查找的原因限定符。
关于java - 从 Channel 事件队列读取 PCF 消息中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13203965/
我很好奇为什么以下不起作用。一般select用default:防止死锁,但在这种情况下不是: package main import "fmt" func main () { a := mak
我一生都无法弄清楚如何切换图像排序。图像以 (x,x,3) 格式读取,theano 要求它是 (3,x,x) 格式。我尝试更改顺序numpy.array([img[:,:,i] for i in ra
我正在向 libnl 发送单个 SSID 和频率进行扫描,但我得到了多个扫描结果以及我请求的 SSID 和频率,但我需要单个扫描结果(仅适用于请求的 SSID),如何实现这一点。请帮助我,我也发送了我
我是 Golang 的新手,但正在努力理解这门伟大的语言!请帮帮我.. 我有 2 个 channel 。 “进”和“出” channel in, out := make(chan Work),
例如我有这段代码: package main import ( "fmt" ) func main() { c1 := make(chan interface{}) close
我们使用以下调用来获取经过身份验证的用户的 ChannelID,它适用于大多数情况。一些 YouTube 用户将他们的 channel 连接到 Google+ 信息页,但在这种情况下,我们的一位用户无
case 'sinfo': const sinfo = new Discord.MessageEmbed() .addField('Server Name 🔎 :', message.guild.n
我需要让所有 channel 来创建一个 bunker 命令,这使得所有 channel 都是只读的。 最佳答案 他们变了Client.servers至 Client.guilds在 newer ve
为什么当第二个值通过另一个 go routine 发送并且没有收到发送的第一个值时, channel c 没有缓冲? package main import "fmt" func sum(s []in
据我所知,内置的 split 会将一个 3 channel Mat 拆分为三个 1 channel Mat。结果,这三个 Mat 只是具有一些不同强度的灰度。 我的意图是获得三个 3 channel
如何检测当前的 RAM 配置?我需要询问 Windows RAM 当前是在单 channel 、双 channel 还是四 channel 中运行。 我搜索了很多,并没有在这个网站或其他网站上找到任何
我需要拆分一个多 channel wav 文件并将每个 channel 编码为 mp3 文件。 我知道 gtresamer 的 deinterleave 插件,但我不确定如何将它用于 wav 文件以及
关闭。这个问题需要details or clarity .它目前不接受答案。 想要改进这个问题吗? 通过 editing this post 添加详细信息并澄清问题. 关闭 8 年前。 Improve
我正在尝试运行 Hyperledger Fabric 网络,它由单个订购者、单个对等节点和一个 cli 组成。为了学习启动 Hyperledger Fabric 网络的过程,从创建与加密相关的工件到将
我在 Laravel 中使用事件广播。我正在使用基于角色的通知访问权限。我有用于广播的自定义 auth guard。当用户连接到 channel 时,客户端将具有内部权限的 access_token
我正在编写一个使用 Elixir Channels 来处理实时事件的应用程序。我知道每个客户端将打开 1 个套接字,并且可以在其上多路复用多个 channel 。所以我的应用程序是一个聊天应用程序,其
我有一些 .wav 文件,我想转换它们的频率 (fs) 和 channel 数 (nchannels)。我在jupyter笔记本python3.6上使用ffmpeg。我使用了以下命令并且它有效。 cm
我有一个视频渲染器,它需要两个 H265 流(YUV420),我需要烘焙它们以使它们中的一个与另一个形成 alpha 蒙版。这一切都已解决并且效果很好,但是如果我按照此处的说明进行操作: ffmpeg
我运行此命令以便能够将 udp 直播流传输到可使用正在构建的移动应用程序播放的 http 直播流。 它只是一个只有音频流的流。 ffmpeg -i udp://@localhost:1111 -map
我在我的 discord.js 机器人中创建了 nuke 命令,它创建了具有相同名称、权限、主题等的 channel ,并删除了“原始” channel 。但是有一个问题,如何使 channel 与“
我是一名优秀的程序员,十分优秀!