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 @   叕叕666  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示