ActiveMQ 创建短暂消息会话,发送并获取消息消费端回复的消息

发送消息

/**
 * 创建消息会话,用来发送并接收消费端回复的消息
 * @throws JMSException
 */
public void sessionSendMessage() 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);
    //发送消息
    TextMessage textMessage = session.createTextMessage("hello!!!");
    String uuid = UUID.randomUUID().toString();
    textMessage.setJMSCorrelationID(uuid);
    textMessage.setStringProperty("type", "C");
    messageProducer.send(textMessage);
    System.out.println("发送完成");
    //接收消息
    connection.start();
    MessageConsumer consumer = session.createConsumer(queue, "JMSCorrelationID='" + uuid + "' and type='P'");
    consumer.setMessageListener(message -> {
        try {
            String text = ((TextMessage) message).getText();
            System.out.println(text);
        } catch (JMSException e) {
            e.printStackTrace();
        }
    });
}

接收消息

/**
 * 创建消息会话,用来接收并回复消息
 *
 * @throws Exception
 */
public void sessionReceiveMessage() throws Exception {
    ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnecti
            ActiveMQConnectionFactory.DEFAULT_USER,
            ActiveMQConnectionFactory.DEFAULT_PASSWORD,
            "tcp://127.0.0.1:61616");
    activeMQConnectionFactory.setTrustAllPackages(true);
    Connection connection = activeMQConnectionFactory.createConnection();
    //false -- 关闭事务;Session.AUTO_ACKNOWLEDGE -- 手动确认
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE
    connection.start();
    Queue queue = session.createQueue("user");
    MessageConsumer consumer = session.createConsumer(queue, "type='C'");
    consumer.setMessageListener(message -> {
        //接收消息
        try {
            String text = ((TextMessage) message).getText();
            System.out.println(text);
        } catch (JMSException e) {
            e.printStackTrace();
        }
        //回复消息
        try {
            MessageProducer producer = session.createProducer(queue);
            TextMessage textMessage = session.createTextMessage("true");
            textMessage.setJMSCorrelationID(message.getJMSCorrelationID());
            textMessage.setStringProperty("type", "P");
            producer.send(textMessage);
            System.out.println("回复完成");
        } catch (JMSException e) {
            e.printStackTrace();
        }
    });
}
posted @ 2022-03-07 18:04  叕叕666  阅读(45)  评论(0)    收藏  举报