JMS&MQ,从入门到精通(五)

上篇我们介绍了,jms实现消息持久化的案例,本篇我们来介绍一个稍微复杂的场景

场景介绍

创建两个Queue,发送者给一个Queue发送,接收者接收到消息之后给另一个Queue回复一个Message,前一个发送者进行接受处理

实现思路

1.创建一个连接
2.创建两个queue,sendQueue,replyQueue
3.给队列sendQueue发消息,监听这处理从replyQueue回复消息给发送者

一个简单的实例

ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
Connection connection = factory.createConnection();
connection.start();

//消息发送到这个Queue
Queue queue = new ActiveMQQueue("sendQueue");

//消息回复到这个Queue
Queue replyQueue = new ActiveMQQueue("replyQueue");

final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

//创建一个消息,并设置它的JMSReplyTo为replyQueue。
Message message = session.createTextMessage("Andy");
message.setJMSReplyTo(replyQueue);

MessageProducer producer = session.createProducer(queue);
producer.send(message);
System.out.println("send message Andy  finish....");

//消息的接收者
MessageConsumer comsumer = session.createConsumer(queue);
comsumer.setMessageListener(new MessageListener(){
    public void onMessage(Message m) {
        try {
            //创建一个新的MessageProducer来发送一个回复消息。
            MessageProducer producer = session.createProducer(m.getJMSReplyTo());
            producer.send(session.createTextMessage("Hello " + ((TextMessage) m).getText()));
            System.out.println("producer 接收到消息后,回复消息完毕");
        } catch (JMSException e1) {
            e1.printStackTrace();
        }
    }

});

//这个接收者用来接收回复的消息
MessageConsumer comsumer2 = session.createConsumer(replyQueue);
comsumer2.setMessageListener(new MessageListener(){
    public void onMessage(Message m) {
        try {
            System.out.println("接受到producer回复的消息:"+((TextMessage) m).getText());
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
});
//首先消息生产者发送一个消息,内容为“Andy”, 然后消费者收到这个消息之后根据消息的JMSReplyTo,
// 回复一个消息,内容为“Hello Andy‘。 最后在回复的Queue上创建一个接收回复消息的消费者,它输出所回复的内容。
我们来看一下运行结果:

这里写图片描述

下一篇我们介绍一下,Queue的一些细节
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一缕阳光直射你的心扉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值