ActiveMQ 异步发送并获取消息消费端回复的消息

发送消息

/**
 * 异步发送并接收消费端回复的消息
 *
 * @throws JMSException
 */
public void asynsendMessage() throws JMSException {
    ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(
            ActiveMQConnectionFactory.DEFAULT_USER,
            ActiveMQConnectionFactory.DEFAULT_PASSWORD,
            "tcp://127.0.0.1:61616");
    Connection connection = factory.createConnection();
    //false -- 关闭事务;Session.AUTO_ACKNOWLEDGE -- 自动确认
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    Queue queue = session.createQueue("user");
    MessageProducer messageProducer = session.createProducer(queue);
    //发送消息
    TemporaryQueue temporaryQueue = session.createTemporaryQueue();
    TextMessage textMessage = session.createTextMessage("hello!!!");
    textMessage.setJMSReplyTo(temporaryQueue);
    messageProducer.send(textMessage);
    System.out.println("发送完成");
    //接收消息
    connection.start();
    MessageConsumer consumer = session.createConsumer(temporaryQueue);
    consumer.setMessageListener(message -> {
        try {
            MessageListenerImpl.consumerMessage(message);
        } catch (JMSException e) {
            e.printStackTrace();
        }
    });
}

接收消息

/**
 * 接受消息并回复
 * @throws Exception
 */
public void receiveMessageAndReply() throws Exception {
    ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(
            ActiveMQConnectionFactory.DEFAULT_USER,
            ActiveMQConnectionFactory.DEFAULT_PASSWORD,
            "tcp://127.0.0.1:61616");
    activeMQConnectionFactory.setTrustAllPackages(true);
    Connection connection = activeMQConnectionFactory.createConnection();
    //false -- 关闭事务;Session.CLIENT_ACKNOWLEDGE -- 手动确认
    Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
    connection.start();
    Queue queue = session.createQueue("user");
    MessageConsumer messageConsumer = session.createConsumer(queue);
    
    messageConsumer.setMessageListener(message -> {
        try {
            String text = ((TextMessage) message).getText();
            System.out.println(text);
            Destination jmsReplyTo = message.getJMSReplyTo();
            System.out.println(jmsReplyTo);
            //确认消息
            message.acknowledge();
            MessageProducer producer = session.createProducer(jmsReplyTo);
            TextMessage textMessage = session.createTextMessage("true");
            //回复消息
            producer.send(textMessage);
        } catch (JMSException e) {
            e.printStackTrace();
        }
    });
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值