用社交网络连接 WebSphere MQ:列队管理器和 MQ 应用程序的 Twitter 通知
2010-06-14 00:00:00 来源:WEB开发网由于 MQ Event 消息是以 PCF 格式发布的,所以必须要将 JMSBytesMessage 对象转换成 PCFMessage 对象。可以按照以下的步骤来完成这个转换:读取入向消息的字节并创建一个 DataInput 对象,然后将它传递给 PCFMessage 的构造函数。图 2 中所示的是当创建一个队列时所生成的一个输出示例:
图 2. 队列创建事件消息作为一个 tweet
查看原图(大图)
WebSphere MQ FTE Transfer Message MDB
WebSphere MQ FTE 是 WebSphere MQ 的一个新版本,它可以设法实现安全可靠的文件传输,并能发布关于传输审计日志的消息。有关这些审计消息的 XML 模式的信息,请参见 WebSphere MQ FTE 信息中心的 Message formats。联合使用 MDB 及一些 JAXB 代码,可以对文件传输的开始和结束进行 Twitter,甚至可以包括在一次传输的元数据中定义的一些散列标签。
清单 4 是特定于 WebSphere MQ FTE 的 MDB。这里,没有连接到一个队列,而是连接到一个 FTE 主题。如果元数据的名称是以关键词 Twitter 开头的,那么与这个文件传输相关联的这个元数据将被追加到状态消息。例如,Twitter.tag=SimpleTweet 会导致 #SimpleTweet 被追加到这个被发送的消息:
清单 4. MQEventMDB.java: onMessage() 方法
public void onMessage(Message message) {
if(message instanceof TextMessage) {
try {
TwitterPlugin tp = new TwitterPlugin("YOUR_USERNAME", "YOUR_PASSWORD");
String output = ((TextMessage) message).getText();
String notification = null;
if(output.contains("TransferLog.xsd")) {
if(output.contains("started")) {
Transaction transaction = generateTransaction(output);
String transferName = getJobName(transaction);
String twitterTags = getTwitterTags(transaction);
notification = "Transfer started: " + transferName;
if(notification.length() "<" (140 - twitterTags.length())) {
notification = notification + " #ftetweet" + " " + twitterTags;
}
} else if(output.contains("completed")) {
Transaction transaction = generateTransaction(output);
String transferName = getJobName(transaction);
String twitterTags = getTwitterTags(transaction);
String transferFailed = "";
if(transaction.getStatus().getResultCode() != 0) {
transferFailed = " Transfer Failed (RC=" +
transaction.getStatus().getResultCode()+")";
}
notification = "Transfer complete: " + transferName + transferFailed;
if(notification.length() "<" (140 - twitterTags.length())) {
notification = notification + " #ftetweet" +
" " + twitterTags;
}
}
}
if(notification != null) {
tp.sendNotification(notification);
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
System.err.println("This application requires a message in TextMessage format");
}
}
下面的图 3 和 图 4 显示了一个文件传输开始和结束时所生成的 tweet:
图 3. WebSphere MQ FTE 文件传输开始
查看原图(大图)
图 4. WebSphere MQ FTE 文件传输结束
查看原图(大图)
结束语
本文向您展示了连接 Twitter 与 WebSphere MQ 队列管理器或是 WebSphere MQ 应用程序是多么容易实现以及它对于将状态消息广播给感兴趣的群体是多么地有效。在企业中可以部署一个名为 StatusNet(以前被称为 Laconica)的 Twitter-风格的开源实现,该实现使用了与 Twitter 完全相同的 API,可以让企业能够快速地建立并部署一个社交网络基础设施。您可以很容易地用 Status.net 代替 Twitter 来开始发布有关您企业工作的信息,而同时无需担心有任何的保密和敏感信息被发布到公共领域。
本文示例源代码或素材下载
更多精彩
赞助商链接