ibm websphere MQ大虾们请进

xiaojun0124 2012-09-19 11:51:28
  请求/响应模式.
  我写了两个方法,一个是请求方,发消息到队列,之后等待响应,  
  另一个是读取请求方发送的消息,之后给于响应.  当我读取请求方消息的时候,我想得到messageId并且转换成字符串,想看看是否与请求方放入队列的messageId是一致的?  
  网上还有说.消息Id可以自定义的,这个怎么自字义..求高手帮忙.
  用java写的代码
...全文
301 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
JasonYao 2012-11-13
  • 打赏
  • 举报
回复
引用 4 楼 javalover_yao 的回复:
给一个忠告:自定义ID一定要保证是48位16进制,不然不同平台之间传递消息会导致消息ID乱码
原因参考:http://blog.csdn.net/javalover_yao/article/details/6570638
JasonYao 2012-11-13
  • 打赏
  • 举报
回复
给一个忠告:自定义ID一定要保证是48位16进制,不然不同平台之间传递消息会导致消息ID乱码
longyangyangyang 2012-10-12
  • 打赏
  • 举报
回复
1,自己定义,你只要能保证消息ID的唯一性,当然也可以
String messageId=UUID.randomUUID().toString()
message.setStringProperty("MessageID", messageId);
2,用MQ自己生成的id,放进去后,你存着这个ID,当你取出来的时候进行比较即是
TextMessage msg= session.createTextMessage();
sender.send(msg);
String messageId = message.getStringProperty("MessageID");
jaminwm 2012-09-19
  • 打赏
  • 举报
回复
package test;

import javax.jms.JMSException;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.management.JMSStatsImpl;
import org.apache.activemq.transport.Transport;
import org.apache.activemq.util.JMSExceptionSupport;

public class CustomActiveMQConnectionFactory extends ActiveMQConnectionFactory{

JMSStatsImpl factoryStats = new JMSStatsImpl();

public CustomActiveMQConnectionFactory(){
super(DEFAULT_BROKER_URL);
}

public CustomActiveMQConnectionFactory(String userName,String password,String brokerURL){
super(userName,password,brokerURL);
}

/**得到一个算定义messageid的Connection*/
public CustomActiveMQConnection createConnection(String messageid) throws JMSException {
CustomActiveMQConnection connection = null;
try{
Transport transport = super.createTransport();
connection = new CustomActiveMQConnection(transport,super.getClientIdGenerator(),factoryStats,messageid);
connection.setUserName(userName);
connection.setPassword(password);
super.configureConnection(connection);
transport.start();
if (clientID != null) {
connection.setDefaultClientID(clientID);
}
return connection;
}catch(Exception e){
try {
if(connection!=null)
connection.close();
} catch (Throwable ignore) {
}
throw JMSExceptionSupport.create("Could not connect to broker URL: " + brokerURL + ". Reason: " + e, e);
}
}
}
jaminwm 2012-09-19
  • 打赏
  • 举报
回复
package test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.command.ConnectionId;
import org.apache.activemq.command.ConnectionInfo;
import org.apache.activemq.management.JMSStatsImpl;
import org.apache.activemq.transport.Transport;
import org.apache.activemq.util.IdGenerator;

public class CustomActiveMQConnection extends ActiveMQConnection{

/**自己的connectionInfo*/
private ConnectionInfo info;

/**messageid的正则*/
private final Pattern pattern = Pattern.compile("ID:([\\w*-?\\w*]*)-\\d+-\\d+-\\d+:\\d+");

public CustomActiveMQConnection(final Transport transport,
IdGenerator clientIdGenerator, JMSStatsImpl factoryStats,String messageid)
throws Exception {
super(transport, clientIdGenerator, factoryStats);
//取得生动生成的connectionid
String uniqueId = super.getConnectionInfo().getConnectionId().getValue();
if(messageid!=null){//替换机器名
Matcher matcher = pattern.matcher(uniqueId);
if(matcher.find()){
String localName = matcher.group(1);
uniqueId = uniqueId.replace(localName, messageid);
}
}
//构造自己的connectionInfo
this.info = new ConnectionInfo(new ConnectionId(uniqueId));
this.info.setManageable(true);
this.info.setFaultTolerant(transport.isFaultTolerant());
}

public ConnectionInfo getConnectionInfo() {
return this.info;
}

public void setUserName(String userName) {
this.info.setUserName(userName);
}

public void setPassword(String password) {
this.info.setPassword(password);
}

}

2,633

社区成员

发帖
与我相关
我的任务
社区描述
WebSphere 是 IBM 的软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。
社区管理员
  • WebSphere社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧