gpt4 book ai didi

java - 在 Websphere MQ 退出中解析 byteBuffer

转载 作者:行者123 更新时间:2023-12-02 16:20:06 25 4
gpt4 key购买 nike

我正在尝试构建一个自定义 mq 导出来存档命中队列的消息。我有以下代码。

class MyMqExits implements WMQSendExit, WMQReceiveExit{

@Override
public ByteBuffer channelReceiveExit(MQCXP arg0, MQCD arg1, ByteBuffer arg2) {
// TODO Auto-generated method stub

if ( arg2){
def _bytes = arg2.array()
def results = new String(_bytes)
println results;
}

return arg2;
}
...

消息的内容( header /正文)位于字节缓冲区中,以及一些不可读的二进制信息。如何解析来自 arg2 的消息(包括正文和队列名称)?我们已经浏览了 IBM 的文档,但还没有找到一个对象或任何可以使这变得简单的东西。

最佳答案

假设以下两点:

1) 您的发送方应用程序尚未对放置消息的队列名称进行硬编码。因此,您可以更改应用程序配置以将消息发送到不同的对象。

2) 归档消息的MessageId并不重要,只有消息正文才重要。

然后我能想到的一种替代方法是创建一个解析为主题的别名队列并使用两个订阅者来接收消息。

1) 订阅者 1:管理上定义的持久订阅者,具有用于接收消息的队列。提供与现有使用者应用程序接收消息的队列名称相同的队列名称。

2) 订阅者 2:另一个管理定义的持久订阅者,提供了队列。您可以编写一个简单的 Java 应用程序来从此队列和存档中获取消息。

3) 两个订阅者订阅同一主题。

步骤如下:

// Create a topic
define topic(ANY.TOPIC) TOPICSTR('/ANY_TOPIC')
// Create an alias queue that points to above created topic
define qalias(QA.APP) target(ANY.TOPIC) targtype(TOPIC)
// Create a queue for your application that does business logic. If one is available already then no need to create.
define ql(Q.BUSLOGIC)
// Create a durable subscription with destination queue as created in previous step.
define sub(SB.BUSLOGIC) topicstr('/ANY_TOPIC') dest(Q.BUSLOGIC)
// Create a queue for application that archives messages.
define ql(Q.ARCHIVE)
// Create another subscription with destination queue as created in previous step.
define sub(SB.ARCHIVE) topicstr('/ANY_TOPIC') dest(Q.ARCHIVE)

编写一个简单的 MQ Java/JMS 应用程序以从 Q.ARCHIVE 获取消息并归档消息。

关于java - 在 Websphere MQ 退出中解析 byteBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29502187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com