JMS学习8 - 测试Message的JMSReplyTo属性

/**
 * 测试Message.JMSReplyTo属性
 * 
 * @author sunjun
 */
public class ReplyTest extends JMSBase {

/**
 * 发送消息
 * 
 * @throws Exception
 */
public void testSend() throws Exception {
Connection con = getConnection();
con.start();

Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("queue_1");

MessageProducer producer = session.createProducer(queue);
// 设置回复地址
Queue replyQueue = session.createQueue("queue_1_reply");
TextMessage msg = session.createTextMessage("hello");
msg.setJMSReplyTo(replyQueue);
producer.send(msg);

MessageConsumer consumer = session.createConsumer(replyQueue);
// 接收回复消息
consumer.setMessageListener(new MessageListener() {

@Override
public void onMessage(Message message) {
try {
if (message != null && message instanceof TextMessage) {
System.out.println("reply msg:"
+ ((TextMessage) message).getText());
}
} catch (JMSException e) {
e.printStackTrace();
}
}
});
}

/**
 * 接收消息
 * 
 * @throws Exception
 */
public void testReceive() throws Exception {
final Connection con = getConnection();
con.start();
Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("queue_1");
MessageConsumer consumer = session.createConsumer(queue);
// 接收消息
consumer.setMessageListener(new MessageListener() {

@Override
public void onMessage(Message message) {
try {
if (message != null && message instanceof TextMessage) {
System.out.println("msg:"
+ ((TextMessage) message).getText());

// 发送回复消息
Destination replyQueue = message.getJMSReplyTo();
Session session = con.createSession(false,
Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = session
.createProducer(replyQueue);
TextMessage msg = session.createTextMessage("thanks");
producer.send(msg);
}
} catch (JMSException e) {
e.printStackTrace();
}
}
});
}

/**
 * @param args
 * @throws Exception
 */
public static void main(String[] args) throws Exception {
ReplyTest test = new ReplyTest();
test.testReceive();
test.testSend();
}

}
通过使用这个replyTo,我们可以通过JMS来实现远程接口调用的功能,就象以前的RabbitMQ一样,只不过它们遵从的协议不一样,内部构造及其设计也有些区别,但都是消息中间件,发送接收消息的基本功能都是一样的,有空写个试试看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值