我正在评估Websphere MQ7。我是传统的TibRV人。我不喜欢的一件事是IBM Java客户端库需要C ++库才能运行。无论如何都要运行IBM Java客户端库而不需要C ++库?例如是否有一个用于MQ的纯Java客户端库?
答案 0 :(得分:0)
我之前已经编写了一个JMS客户端到MQSeries v6(不是您的版本,我知道),而无需安装本机库。我需要的唯一IBM库名为:
根据this post,他们提供客户端安装。我假设您可以安装一次,然后重新使用罐子(除了任何许可问题和专家意见)。
编辑:在回复您的评论时,这是我破解的客户端代码。它用于从队列中读取消息并将它们分成文件。它是用Scala编写的。我希望它有所帮助。
import com.ibm.mq._
import java.text._
import java.io._
case class QueueDetails(hostname: String, channel: String,
port: Int, queueManager: String, queue: String)
class Reader(details: QueueDetails) {
def read = {
MQEnvironment.hostname = details.hostname
MQEnvironment.channel = details.channel
MQEnvironment.port = details.port
val props = new java.util.Hashtable[String, String]
props.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES)
MQEnvironment.properties = props
val qm = new MQQueueManager(details.queueManager)
val options = MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_INQUIRE
val q = qm.accessQueue(details.queue, options, null, null, null)
val depth = q.getCurrentDepth
val indexFormat = new DecimalFormat(depth.toString.replaceAll(".", "0"))
def exportMessage(index: Int): Unit = {
if (index < depth) {
val msg = new MQMessage
q.get(msg, new MQGetMessageOptions)
val msgLength = msg.getMessageLength
val text = msg.readStringOfByteLength(msgLength)
val file = new File("message_%s.txt".format(indexFormat.format(index)))
val writer = new BufferedWriter(new FileWriter(file))
writer.write(text)
writer.close
println(file.getAbsolutePath)
exportMessage(index + 1)
}
}
exportMessage(0)
q.close
qm.disconnect
}
}